Когда я создаю массив, например:
$array = [ '1.' => "Дерево", '2.' => "Куст", '3.' => "Трава", '4.' => "Овощи" ];
echo $array;
foreach($array as $t=>$ms){ echo "$t $ms<br >"; };
Почему?
Отправлено 16 Сентябрь 2015 - 15:57
Когда я создаю массив, например:
$array = [ '1.' => "Дерево", '2.' => "Куст", '3.' => "Трава", '4.' => "Овощи" ];
echo $array;
foreach($array as $t=>$ms){ echo "$t $ms<br >"; };
Почему?
Отправлено 16 Сентябрь 2015 - 16:57
Сообщение отредактировал jytyx: 16 Сентябрь 2015 - 16:57
Отправлено 16 Сентябрь 2015 - 17:30
Почему?По определению. Хотите выводить массив без лишних телодвижений, используйте var_dump().
Отправлено 17 Сентябрь 2015 - 05:54
По определению. Хотите выводить массив без лишних телодвижений, используйте var_dump().
Пробовал, выводит не так, как надо.
или у вас ошибки не включены.
Видимо да, раз у меня открывается просто белый экран. А как их включить?
во втором (правильном)
Получается, пока не поместишь массив в какую-нибудь переменную - его использовать нельзя, да?
Отправлено 17 Сентябрь 2015 - 07:19
Сообщение отредактировал Info-Mans: 17 Сентябрь 2015 - 07:21
»»» Начни изменять свою жизнь с внешнего вида «««
Буду рад вашим комментариям на блоге!
Отправлено 17 Сентябрь 2015 - 07:31
Видимо да, раз у меня открывается просто белый экран. А как их включить?
если сервер боевой, то не стоит каждому встречному давать инфу, можно что-то вроде
$debugHost = '127.0.0.1'; //хотя говорят, что при наличии пряых рук его можно подделать if ($_SERVER['REMOTE_ADDR'] === $debugHost) { error_reporting(-1); }
или через http://php.net/manua...or-get-last.php
Получается, пока не поместишь массив в какую-нибудь переменную - его использовать нельзя, да?
не только в переменную, например
echo [1 => "бла", 2=> "бла-бла"][1]; //бла function returnArray() { return [1 => "бла", 2 => "бла-бла"]; } echo returnArray()[1]; //бла
или в какой файл настроек settings.php включить
<?php return [ "debugmode" => true, ];
и
$settings = require_once 'settings.php'; var_dump($settings);
хотя это как бы в переменную, но неочевидно.
Во втором случае, если вы не можете обеспечить наличие строки в значении массива (нет глобальной точки, которая помещает туда значение и проверяет, что там строка, код разбросан и там может быть все что угодно, то перед выводом значения проверяете is_array, если массив - то рекурсия этой же функции вывода к значению. Если в значении только и только строка, то проверяете is_string и кидаете \InvalidArgumentException в функции\методе-установщике значения массива, тогда можно упростить проверку вывода и не перегружать его проверками, но если понадобится там массив, то опять переделывать... все, так что от задачи зависит.
А вообще http://php.net/manua...types.array.php делайте по образцу, нотация квадратных скобок с 5.4
UPD. Да, имейте ввиду, что при всех проверках потом придется еще проверять на instanceof \Traversable или \ArrayAccess, ибо вместо массива удобно гонять объекты, так что не советую распылять по коду простые проверки, лучше все инкапсулировать в функции\методы объектов и не дублировать себя.
Сообщение отредактировал jytyx: 17 Сентябрь 2015 - 07:50
Отправлено 17 Сентябрь 2015 - 14:01
Если вам надо вывести значение из массива, необходимо напрямую обращаться к нему echo $array[1.] и так далее Есть еще вариант просмотра, что у вас в массиве var_damp или print_r И ваш вариант с помощью foreach
Понятно.
если сервер боевой, то не стоит каждому встречному давать инфу, можно что-то вроде $debugHost = '127.0.0.1'; //хотя говорят, что при наличии пряых рук его можно подделать if ($_SERVER['REMOTE_ADDR'] === $debugHost) { error_reporting(-1); } или через http://php.net/manua...or-get-last.php
Спасибо за ссылочку.
Отправлено 04 Ноябрь 2015 - 22:42
если сервер боевой, то не стоит каждому встречному давать инфу, можно что-то вроде
ай-яй-яй. Веб это постоянная попытка догнать уходящий поезд. Мало ли кто будет читать - а я, дурак, насоветовал тут.
$_SERVER['REMOTE_ADDR'] - не надо так делать. При доступе через cli будет не найден ключ. проверить через isset.
error_reporting - не трогать (хотя смотря какая система). Трогать нужно display_errors, что-то типа
switch ($environment) {
case 'development':
ini_set('display_errors', 1);
break;
case 'production':
ini_set('display_errors', 0);
break;
default:
header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
echo 'The application environment is not set correctly.';
exit(1); //тут уж от вкусов или отлуп, исключение и т.д.
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: MasterWebs.ru