LINUX.ORG.RU

php массив в цикле

 


0

1

Здравствуйте. Столкнулся с такой проблемой, что при каждой итерации массив присваивает определённый свой элемент переменной, но не перезаписывает его (что должно быть в моём понимании), а добавляет к присвоенному ранее значению в конец строки. Сколько итераций, столько и повторяется элемент массива в строке переменной, при этом переменная остаётся переменной. Как добиться перезаписи переменной с каждой итерацией?

Перемещено Zhbert из admin



Последнее исправление: alexisiumus (всего исправлений: 1)

не знаю как в вашем убогом пхп, но в нормальных языках присваивают значение с помощью «=»

anonymous
()

цыкле

ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ

anonymous
()
Ответ на: комментарий от Zhbert

В чём может быть проблема? Ошибок нет. Проблема только в том, что переменная не обновляется. для этого должен применяться оператор .=, в моём случае стоит чистое присвоение.

alexisiumus
() автор топика
Ответ на: php массив в цыкле от alexisiumus

божественный синтаксис… мне кажется самое унылое говно будет выглядеть лучше, чем это.

anonymous
()
Ответ на: комментарий от Spoofing

Там же написано, что «при этом переменная остаётся переменной».

alexisiumus
() автор топика

цЫган на цЫпочках цЫкнул цЫпленку цЫц!

остальное от лукавого.

массив присваивает

он живой? пацаны, скайнет идет!

deep-purple ★★★★★
()

Специально для пхп-обезъянок поправил:

for ($a = 0; $a <= $count - 1; $a++) {
  $x = $array[$a];
  $y = $str0[$i];
  $z = $str1[$i];
  if ($x == $y) {
    $array[$a] = $z;
  }

Не хватает одной закрывающей }, если что.

Давай лучше демонстрационный код приведи, с входными данными.

AnDoR ★★★★★
()
Ответ на: php массив в цыкле от vvn_black

Та же реакция, что и на моём сервере. Функция работает без ошибок, но как я уже сказал, переменная не перезаписывается, а дописывается, а поэтому при сравнении не срабатывает условие. Что за особенность такая, никто не может подсказать..

alexisiumus
() автор топика
Последнее исправление: alexisiumus (всего исправлений: 1)
Ответ на: комментарий от AnDoR
<?php
ini_set('error_reporting', E_ALL);
function zam_str($file, $str0, $str1) {
	$array = file("file");
	$count = count($array);
	$c = count($str0);                        
	for ($i = 0; $i <= $c - 1; $i++) {
		for ($a = 0; $a <= $count - 1; $a++) {
			$x = $array[$a]; 
			$y = $str0[$i];        
			$z = $str1[$i]; 
			if ($x == $y) {                                     
			$array[$a] = $z;
			//print_r($y);
        }
	}	 
	}
	    $fp = fopen('http://skil.su/php/temp/temp.php', 'w+');
		fputs($fp, implode("", $array));
		fclose($fp);
		echo "<h1>Ok!</h1>";
}
$st_zn = array("aaaaa");
$n_zn = array("bbbbb");
zam_str("http://skil.su/2/file", $st_zn, $n_zn);
?>
alexisiumus
() автор топика
Последнее исправление: alexisiumus (всего исправлений: 3)
Ответ на: комментарий от alexisiumus

Всё тут хватает

Ну если всего хватает, то проблема решена, ЛОЛ. Во-первых, таки не хватает закрывающей скобки для цикла. Ну это хрен с ним, допустим что ты плохо скопипастил. Во-вторых ты чего-то недоговариваешь. Например что там за $str0[$i] и т.д. Пили тестовый пример с данными. Телепатически вижу, что у тебя проблема в логике кода, такого поведения массовов в пыхе нет.

PS: к слову об илите. ТС коммент отредактировал, а я ответил на предыдущую версию. Вроде бы это должно отслеживаться и не давать отвечать если коммент изменился? ЛОР такой ЛОР.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от anonymous

Это не требования, это такие спецы собрались. Вместо диалога по теме занимаются демонстрацией своих знаний русского языка, хотя с логикой явные проблемы… Некоторые определение слова «синтаксис» не понимают. Правила и есть правила, они одинаковы для каждого синтаксиса. Как одни правила могут быть кривыми, а другие красивыми?

alexisiumus
() автор топика
Ответ на: комментарий от alexisiumus

В общем я быстренько почекал, УМВР. Но есть нюанс, в твоём примере в строках прочитанных из файла будет \n в конце каждой строки и т.о. сравнение у тебя никогда не работает при таких исходных данных. Нужно либо добавить \n

$st_zn = array("aaaaa\n");
$n_zn = array("bbbbb\n");

либо делать rtrim на каждой строке

$x = rtrim($array[$a]);

Я хз конечно, как у тебя там что-то добавляется, но вангую, что тебе просто показалось из-за implode("", $array)

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Идея такая: Функция получает три аргумента:

  1. Адрес файла в котором нужно поменять некоторые строки.
  2. Массив со строками(строкой) какие надо поменять.
  3. Массив на какие строки поменять. Функция создаёт новый файл с обновлённым содержимым.
alexisiumus
() автор топика
Ответ на: комментарий от crutch_master

Зачем? Значения этих имён совершенно не совпадают. Название моего домена обозначено не тем смыслом о котором ты. Я учить никого не собираюсь.

alexisiumus
() автор топика
Ответ на: комментарий от alexisiumus

Замысел не тот.

В смысле не тот?
У тебя файл, ты его вычитываешь в строку. Есть два массива. Один - что поменять, другой - на что поменять. Тебе надо пробежаться по этим двум массивам и сделать соотвествующие замены. Всё верно?

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от alexisiumus

http://skil.su

Эта страница была открыта 9 января 2004,

Остерегайтесь подделок: эта страница изначальная и единственная. Мы постоянно совершенствуем её.

C 2004 года . Совершенствуете .

anonymous
()
Ответ на: удаленный комментарий

Да сделай ты уже фильтрацию тегов и прочего говна. Хотя бы через htmlspecialchars.

anonymous
()
Ответ на: комментарий от anonymous

Правильно отрабатывают, но у них функционал другой. Дайте мне ссылку на функцию которая производит замену нескольких строк в файле и соответственно каждой своим вариантом, так как задумано в приведённой выше функции. python не знаю. я «убогий» php учу. Это, что анкета?

alexisiumus
() автор топика
Ответ на: комментарий от alexisiumus

php массив в цыкле

<script>document.getElementsByTagName('body')[0].innerHTML = "<style>html, body {background: #fff; color: #000; font-size: 30px; }</style><br><br><br><pre>* g o a t s e x * g o a t s e x * g o a t s e x *\ng                                               g  \no /     \             \            /    \       o\na|       |             \          |      |      a\nt|       `.             |         |       :     t\ns`        |             |        \|       |     s\ne \       | /       /  \\   --__ \       :    e\nx  \      \/   _--~~          ~--__| \     |    x  \n*   \      \_-~                    ~-_\    |    *\ng    \_     \        _.--------.______\|   |    g\no      \     \______// _ ___ _ (_(__>  \   |    o\na       \   .  C ___)  ______ (_(____>  |  /    a\nt       /\ |   C ____)/      \ (_____>  |_/     t\ns      / /\|   C_____)       |  (___>   /  \    s\ne     |   (   _C_____)\______/  // _/ /     \   e\nx     |    \  |__   \_________// (__/       |  x\n*    | \    \____)   `----   --'             |  *\ng    |  \_          ___\       /_          _/ | g\no   |              /    |     |  \            | o\na   |             |    /       \  \           | a\nt   |          / /    |         |  \           |t\ns   |         / /      \__/\___/    |          |s\ne  |           /        |    |       |         |e\nx  |          |         |    |       |         |x\n* g o a t s e x * g o a t s e x * g o a t s e x *</pre>";</script>Введите текст...  

Вот этот код был записан в файле с доступом 664, как так можно? Хотя.. владелец www-data

alexisiumus
() автор топика
Последнее исправление: alexisiumus (всего исправлений: 2)
Ответ на: комментарий от anonymous

Если о слове «skil», то оно переводиться с исландского как «понять», свободное имя домена на английском, потому, что подобрать сложно. Я яндексом не пользуюсь принципиально. Английский только технический. Re: php массив в цикле http://skil.su

Эта страница была открыта 9 января 2004,

Остерегайтесь подделок: эта страница изначальная и единственная. Мы постоянно совершенствуем её.

C 2004 года . Совершенствуете .

anonymous (12.08.20 12:07:20) Этот домен я купил пару месяцев назад

alexisiumus
() автор топика
Ответ на: комментарий от alexisiumus
for ($a = 0; $a <= $count - 1; $a++) {  
    $x = $array[$a];
    $y = $str0[$i];
    $z = $str1[$i]; 
    if ($x == $y) {
        $array[$a] = $z; 
    }
}

Ну хоть как-то так бы начал, читать же невозможно

foreach ($array as $a => $x) {
    $y = $str0[$i];
    $z = $str1[$i];
    
    if ($x == $y) {
       $array[$a] = $z; 
    }
}

или так:

$array = array_map(function($item) use ($str0, $str1, $i) {
    
    $y = $str0[$i];
    $z = $str1[$i];
    
    return ($item == $y) ? $z : $item;

}, $array);
alexmaru
()
Последнее исправление: alexmaru (всего исправлений: 3)
Ответ на: комментарий от alexisiumus

зачем спрашивать, если можно найти?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.