PHP массив в другой функции - PullRequest
0 голосов
/ 20 июня 2011

Хорошо, теперь это странно, но когда я печатаю массив в функции test1, он печатает все массивы, но когда он отображает его из функции test2, он отображает только последние записи, может кто-нибудь сказать мне, где я не прав?1002 *

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

Это потому, что цикл foreach зацикливается и устанавливает $this->block.Таким образом, после завершения последней итерации $this->block теперь устанавливаются данные в последнем цикле.

УТОЧНЕНИЕ

Каждый цикл, который мы выполняем в цикле foreach, устанавливает$this->block к некоторым новым данным.Как только последняя итерация цикла завершена, нам передаются данные, которые были выведены в последнем цикле.

Имеет ли это больше смысла?

0 голосов
/ 20 июня 2011

Причина, по которой вы видите только последнюю запись, заключается в том, что вы перезаписываете все предыдущие записи, как вы делаете это в вашем while -loop:

$template->test1(array("TIT" => $row1['title']));

Тогда внутри test1() вы делаете довольно странное утверждение:

public function test1($data){
    foreach($data as $k => $v){
        $this->block[$k] = $v;
    }
    print_r ($this->block);
}

Вы делаете foreach($data as $k => $v), что не является обязательным, поскольку в массиве есть только ОДНО значение (одна пара значений ключа). Тем не менее, вы указываете $this->block[$k] = $v; и $k одинаково каждый раз (TIT и FTIT), поэтому вы перезаписываете все предыдущие заданные значения каждый раз, когда вызываете test1().

Если вы затем позвоните test2(), который не имеет никаких «установленных» возможностей, а отображает только $this->block, вы получите только последнее значение для TIT и FTIT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...