$device = array (file ('files/laptop.txt'), file ('files/netbook.txt'));
При выводе его на экран получается вот такой результат:
Array
(
[0] => Array
(
[0] => dell laptop
[1] => acer laptop
[2] => sony laptop
[3] => asus laptop
[4] => lenovo laptop
)
[1] => Array
(
[0] => dell netbook
[1] => acer netbook
[2] => sony netbook
[3] => asus netbook
[4] => lenovo netbook
)
)
Но если я делаю вот так:
$namefiles = 'file (\'files/laptop.txt\'), file (\'files/netbook.txt\')';
$device = array ($namefiles);
То на экран выводится:
Array
(
[0] => file ('files/laptop.txt'), file ('files/netbook.txt')
)
Вопрос: как сделать так, чтобы код второго варианта
$namefiles = 'file (\'files/laptop.txt\'), file (\'files/netbook.txt\')';
$device = array ($namefiles);
давал результат как в первом варианте? Просто переменная $namefiles будет иметь значение в зависимости от того, сколько файлов будет лежать в папке, к которой обращается скрипт. Потому я такое и делаю.
Спустя 21 минута, 18 секунд (27.06.2010 - 14:01) vagif написал(а):
а ты эти файлы тоже скинь,но фактически должна выводить первый вариант,подругому никак
Спустя 12 минут, 1 секунда (27.06.2010 - 14:13) Rombl4 написал(а):
Цитата |
а ты эти файлы тоже скинь |
Так и так ведь понятно что за файлы. Файл laptop.txt содержит 5 строк массива с индексом [0], файл netbook.txt - с индексом [1].
Цитата |
но фактически должна выводить первый вариант,подругому никак |
Я отдельно от основного скрипта тестировал
$namefiles = 'file (\'files/laptop.txt\'), file (\'files/netbook.txt\')';
$device = array ($namefiles);
print_r ($namefiles);
Выводит строку "file ('files/laptop.txt'), file ('files/netbook.txt')"
Спустя 2 минуты, 54 секунды (27.06.2010 - 14:16) olgatcpip написал(а):
Цитата |
$namefiles = 'file (\'files/laptop.txt\'), file (\'files/netbook.txt\')'; |
хм... а что ты хочешь получить?
Цитата |
file — Читает содержимое файла и помещает его в массив |
Одного файла! А ты ему хочешь дать два?
+ то что я вижу $namefiles - это просто строка
+ то что я вижу $namefiles - это просто строка
Спустя 6 минут, 20 секунд (27.06.2010 - 14:22) Rombl4 написал(а):
Цитата |
хм... а что ты хочешь получить? |
Я хочу загнать в массив несколько функций file (в зависимости от того, сколько файлов лежит в папке), через переменную $namefiles.
Цитата |
Одного файла! А ты ему хочешь дать два? |
Хочу больше.
$device = array (file ('files/laptop.txt'), file ('files/netbook.txt'));
print_r ($device);
Эта конструкция вполне жизнеспособна. Тут хоть сотню файлов добавляй. Только проблема в том, что ручками сотню файлов прописывать в array () как-то не очень охота.
Спустя 8 минут, 5 секунд (27.06.2010 - 14:31) olgatcpip написал(а):
попробуй так
$namefiles=array();
foreach (glob("files/*") as $filename) {
if(!is_file($filename)) continue;
echo "$filename size " . filesize($filename) . "\n";
$namefiles[]=file($filename);
}
Спустя 58 минут, 22 секунды (27.06.2010 - 15:29) Rombl4 написал(а):
Спасибо за код, думаю пригодится, но в данном случае вывод массива через цикл мне не помог.
Спустя 1 минута, 7 секунд (27.06.2010 - 15:30) olgatcpip написал(а):
И что он делает не так?
Спустя 8 минут, 9 секунд (27.06.2010 - 15:38) Rombl4 написал(а):
Цитата |
И что он делает не так? |
Он все делает так, но я пока что не смог его приспособить к своему скрипту. У меня там еще несколько циклов, вложенных один в другой.
Спустя 9 минут, 21 секунда (27.06.2010 - 15:48) Rombl4 написал(а):
Вот пример скрипта куда я применил предложенный код:
В файле link.txt пару линков:
<a href="domain1.com">laptop</a>
<a href="domain2.com">netbook</a>
Результат скрипта должен быть такой:
Но пока что он не тот что надо.
<?php
$anchor = file ('link.txt'); //
for ($z = 0; $z<5;$z++) {
foreach ($anchor as $urls) {
$device=array();
foreach (glob("files/*") as $id => $filename) {
if(!is_file($filename)) continue;
$device[]=file($filename);
$filename = preg_replace ('/files\/(.*).txt/','$1',$filename);
$pattern = "/(<a.*>)(".$filename.")(<\/a>)/";
$replacement = "$1".$device[$id][$z]."$3";
$urls = preg_replace ($pattern,$replacement,$urls);
echo $urls."<br>";
}
}
}
?>
В файле link.txt пару линков:
<a href="domain1.com">laptop</a>
<a href="domain2.com">netbook</a>
Результат скрипта должен быть такой:
<a href="domain1.com">dell laptop</a><br>
<a href="domain2.com">dell netbook</a><br>
<a href="domain1.com">acer laptop</a><br>
<a href="domain2.com">acer netbook</a><br>
<a href="domain1.com">sony laptop</a><br>
<a href="domain2.com">sony netbook</a><br>
<a href="domain1.com">asus laptop</a><br>
<a href="domain2.com">asus netbook</a><br>
<a href="domain1.com">lenovo laptop</a><br>
<a href="domain2.com">lenovo netbook</a><br>
Но пока что он не тот что надо.
Спустя 21 минута, 18 секунд (27.06.2010 - 16:09) Rombl4 написал(а):
аа, блин вот это я лоханулся,
надо было всего лишь echo $urls."<br>"; вынести за фигурную скобку )
Теперь заработало.
Olgatcpip, спасибо!
надо было всего лишь echo $urls."<br>"; вынести за фигурную скобку )
<?php
$anchor = file ('link.txt'); //
for ($z = 0; $z<5;$z++) {
foreach ($anchor as $urls) {
$device=array();
foreach (glob("files/*") as $id => $filename) {
if(!is_file($filename)) continue;
$device[]=file($filename);
$filename = preg_replace ('/files\/(.*).txt/','$1',$filename);
$pattern = "/(<a.*>)(".$filename.")(<\/a>)/";
$replacement = "$1".$device[$id][$z]."$3";
$urls = preg_replace ($pattern,$replacement,$urls);
}echo $urls."<br>";
}
}
?>
Теперь заработало.
Olgatcpip, спасибо!