Articles of Ссылка на

Мой массив ссылок PHP «магически» становится массивом ценностей … почему?

Я создаю оберточную функцию вокруг mysqli, так что мое приложение не должно быть чрезмерно сложным с кодом обработки базы данных. Часть этого кода – это немного кода для параметризации вызовов SQL с помощью mysqli :: bind_param (). bind_param (), как вы знаете, требует ссылок. Поскольку это полу-общая оболочка, я в конечном итоге делаю этот вызов: […]

Обнаружение ссылок в массиве из другой функции

Поэтому я использую метод pin, но ссылка обнаружена на одном уровне слишком поздно: $pin = time(); function wrap($arr){ test($arr); } function test(&$arr){ global $pin; if(in_array($pin, $arr)) return print "ref"; $arr[] = $pin; foreach($arr as &$v){ if($v != $pin){ if(is_array($v)) return test($v); print $v . " "; } } } $array = array(1, 2, 3); $array[4] […]

Сериализовать / unserialize PHP-объект-график для JSON

Я хотел, чтобы сериализовать полный PHP-объект-граф в строковое представление JSON и неэтериализовать его обратно на идентичный PHP-объект-граф. Вот краткое изложение вариантов, которые я рассмотрел, и причины, по которым они не работают для меня: serialize() не делает то, что я хочу, потому что он использует формат, специфичный для PHP. Я хочу формат, который широко поддерживается большинством […]

Строгие стандарты: только переменные должны передаваться по ссылке

$el = array_shift($instance->find(..)) Вышеприведенный код как-то сообщает о строгом стандартном предупреждении, но это не будет: function get_arr(){ return array(1,2); } $el = array_shift(get_arr()); Итак, когда он все равно сообщит о предупреждении?

PHP Foreach Pass по ссылке: Дублирование последнего элемента? (Ошибка?)

У меня просто было очень странное поведение с простым скриптом php, который я писал. Я уменьшил его до минимума, необходимого для воссоздания ошибки: <?php $arr = array("foo", "bar", "baz"); foreach ($arr as &$item) { /* do nothing by reference */ } print_r($arr); foreach ($arr as $item) { /* do nothing by value */ } print_r($arr); […]

Что лучше в цикле foreach … с использованием символа & или переназначения на основе ключа?

Рассмотрим следующий код PHP: //Method 1 $array = array(1,2,3,4,5); foreach($array as $i=>$number){ $number++; $array[$i] = $number; } print_r($array); //Method 2 $array = array(1,2,3,4,5); foreach($array as &$number){ $number++; } print_r($array); Оба метода выполняют одну и ту же задачу: одну, назначая ссылку, а другую, переставляя на основе ключа. Я хочу использовать хорошие методы программирования в своей работе, […]

get_instance () в Codeigniter: зачем назначать его переменной?

В Codeigniter get_instance() – глобально доступная функция, которая возвращает супер-объект Controller, который содержит все загруженные классы (он возвращает экземпляр класса Controller). Я буду включать текущий исходный код: get_instance() определяется в Codeigniter.php // Load the base controller class require BASEPATH.'core/Controller.php'; function &get_instance() { return CI_Controller::get_instance(); } И CI_Controller определяется в Controller.php class CI_Controller { private static […]

Как написать файл журнала ошибок в PHP

Я хочу написать сообщение в файл журнала ошибок при выполнении кода PHP. Я пытаюсь использовать функцию PHP error_log() Docs . Но для меня это не работает.

PHP: массив для самостоятельной привязки

Есть ли способ ссылки на массив из массива? Это может иметь смысл в формате кода: $array=array( "Key1"=>array( "Value1", "Value2" ), "Key2"=>&$this['Key1'] ); Я хочу, чтобы $array['Key2'] то же, что и $array['Key1'] . Я могу добавить $array['Key2']=&$array['Key1']; после создания массива, но хотелось бы сохранить все это в одном блоке кода, если это возможно. Я проверил документы […]

Только переменные могут передаваться по ссылке

У меня была яркая идея использования специального обработчика ошибок, который привел меня к кроличьей дыре. Следующий код дает (с и без специального обработчика ошибок): Фатальная ошибка: только переменные могут передаваться по ссылке function foo(){ $b=array_pop(array("a","b","c")); return $b; } print_r(foo()); Следующий код дает ( только с помощью специального обработчика ошибок ): (2048) Только переменные должны передаваться […]