php: is_array
Запости весь кусок кода. У тебя где-то в нём ошибка.
Знаешь что в ПХП нет никакого средства контроля хэш у тебя или массив?
хеш хешей хешей хешей походу даже
В PHP нет разницы между ними. Можешь считать, что в PHP есть только „упорядоченные хеши“ (и не надо говорить, что хеш по определению не упорядочен).
Код в студию.
+1
$a['field1']
сам по себе является массивом/хэшем (в php-ном понимании этого слова).
Дело в том, что я передаю этот массив в функцию. Там надо проверить, является ли $a['field1'] массивом и если да - то не пустым, а уже потом пробежаться по элементам при помощи foreach.
Ну примерный код:
$a['field1']['foo1']['field2']['foo1'] = 'x';
$a['field1']['foo2']['field2']['foo5'] = 'y';
дальше вызов функции
func($a);
А уже в ней я предполагаю такую проверку:
if (is_array($a['field1']) && count($a['field1']
{
foreach($a['field1'] as $k => #v)
........
}
В цикл мы не попадаем, потому что is_array - FALSE.
По поводу декларирования - вот я не знаю, как такую структуру корректно задекларировать и можно ли это сделать вообще. Когда объявляется массив, ключи указываются явно, а тут второй ключ заранее неизвестен. Т.е.
$a = array(
'field1' => array(
<что писать здесь?> => array(
'field2' => array(
)
)
)
);
<?
$a['field1']['foo1']['field2']['foo1'] = 'x';
$a['field1']['foo2']['field2']['foo5'] = 'y';
func($a);
function func($a) {
if (is_array($a['field1']) && count($a['field1'] {
print "in";
} else {
print "out";
}
}
?>
http://execmba.ru/test1.php
А у меня false
у меня пхп4
А, всё, нашёл ошибку, спасибо.
Пусть есть такая структура:
$a['elem'][0]['weight'] = 1;
$a['elem'][1]['weight'] = 2;
Как грамотнее всего отсортировать этот массив по полю 'weight' по убыванию?
Чтобы стало:
$a['elem'][0]['weight'] = 2;
$a['elem'][1]['weight'] = 1;
function cmp($a, $b)
{
if ($a['weight'] == $b['weight']) {
return 0;
}
return ($a['weight'] < $b['weight']) ? -1 : 1;
}
$a=Array;
$a['elem'][0]['weight'] = 1;
$a['elem'][1]['weight'] = 2;
usort($a, "cmp");
Оставить комментарий
2354570
Вот допустим, мне надо сделать так.$a['field1'][<некоторая строка, заранее неизвестная>]['field2'][<ещё одна какая-то строка>] = x;
Почему is_array($a['field1']) - FALSE?