2011-12-26 1 views
0

У меня есть:вопросов добавляющих в многомерный массив PHP

$overr=array(); 

$overr[]=array("selector"=>array('vi'=>mysql_num_rows($myquery),'pes'=> 
$pess,'prp'=>mysql_num_rows($my_3_query),'em_t'=>$u_h));//this is in a loop 

Как вы можете видеть, я пытаюсь добавить к массиву ($overr) и добавьте еще один массив внутри.

Проблема заключается в том, его добавление 2 массивов внутри $overr, поэтому, когда я пытаюсь использовать имя ключа выбора эхо определенного массива внутри $overr, он не работает, так как имя ключа (селектор) находится внутри другого массива. .. если это имеет смысл. Ну вот результат я получаю, когда вторя:

echo json_encode ($overr['selector']);//I know i shouldn't be using json_enocde for echoing but its only for temporary testing. 

Результат:

null 

, но когда я это сделать:

echo json_encode ($overr[9]); 

это работает отлично, и печатает 9-массив из. .

Я попытался изменить способ присоединения к массиву:

$overr[]="selector"=>array('vi'=>mysql_num_rows($myquery),'pes'=> 
    $pess,'prp'=>mysql_num_rows($my_3_query),'em_t'=>$u_h);//notice i don't have array at the beginning anymore. 

И это возвращает синтаксическую ошибку.

Мне нужно иметь возможность использовать селектор в качестве ключа.

Я не добавляю к массиву правильно?

Любая помощь очень ценится.

+2

Используйте 'print_r' вместо' json_encode', и вы увидите больше. Кроме того, включите отчет об ошибках и отображение, поэтому вы действительно видите, что не так: 'error_reporting (~ 0); ini_set ('display_errors', 1); '. – hakre

+0

@hakre Эй, я просто попробовал это, и я получаю селектор ошибок Undefined index ... но определенно в массиве. Есть идеи? спасибо –

ответ

0

Добавление к массиву с [] скобами добавляется численно. Если ваш массив имел одну существующую запись, добавление добавляется в индекс 1. Вот почему работает $overr[9].

Ваш цикл приведет $overr похожий

$overr => array( 
    0 => array("selector" => array(...), 
    1 => array("selector" => array(...), 
    ... 
); 

Другими словами, ключ «селектор» спрятан внутри другого массива, и поэтому не могут быть доступны непосредственно с $overr['selector'], а скорее $overr[n]['selector'] с n будучи некоторый индекс в зависимости на длину вашей петли.

Если вы хотите добавить ключевой массив selector, вы могли бы добавить, как так внутри цикла, предполагая, что ключ selector уже установлен:

$overr['selector'][] = array(...) 

Пожалуйста, пост пример того, что вы пытаетесь достичь , если это не отвечает на ваш вопрос.

0

Я не совсем уверен, если это соответствует вашим ожиданиям, но в первом случае можно использовать selector в качестве ключа. Например получение первой selector:

$firstSelector = $overr[0]['selector']; 

Если вы хотите, чтобы записать его в какой-либо другим способом, например, как:

$firstSelect = $overr['selector'][0]; 

Вы должны изменить способ построить $overr массив.

//this is in a loop 
$overr['selector'][] = array(
    'vi' => mysql_num_rows($myquery), 
    'pes' => $pess, 
    'prp' => mysql_num_rows($my_3_query) 
    'em_t'=>$u_h 
); 
+0

Я не могу использовать второй селектор («[0]»), потому что этот массив будет содержать сотни массивов с разными ключами массива (в качестве примера я использовал «селектор»). Поэтому мне нужно иметь возможность просто делать $ over ['selector'] ;. В первом примере вы получите первый массив в $ overr, но мне нужно будет пройти через каждый массив в $ overr и выбрать один из них, используя «селектор». (у каждого массива не будет «селектора» в качестве ключа, все они будут уникальными). благодаря –

Смежные вопросы