У меня есть следующий код:
<?php
function foo($bar)
{
global $products;
//$products = array();
$query = 'SELECT p_name FROM 0_products WHERE p_category IN (' . $bar . ')';
$results = mysql_query($query);
while($row = mysql_fetch_array($results, MYSQL_ASSOC))
{
array_push($products, $row);
echo 'name pushed, ';
}
}
require('mysql_ipb_connect.php'); // connect to ipb mysql database
$products = array();
foo(5);
?>
Когда я запускаю его, я получаю следующий вывод:
Warning: array_push() [function.array-push]: First argument should be an array in /home/rgcpanel/public_html/category/category.php on line 14
name pushed,
Warning: array_push() [function.array-push]: First argument should be an array in /home/rgcpanel/public_html/category/category.php on line 14
name pushed,
Warning: array_push() [function.array-push]: First argument should be an array in /home/rgcpanel/public_html/category/category.php on line 14
name pushed,
Если я раскомментирую "$ products = array ();" тогда вывод правильный:
name pushed, name pushed, name pushed,
Почему это происходит? Я объявляю массив $ products вне функции (поэтому он глобальный), а затем указываю, что он является глобальным внутри функции. Что-то не так, но я не уверен, что это такое?
Спасибо за ваш совет.