проблемы при добавлении в многомерный массив PHP - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть:

$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.

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

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

Не правильно ли я добавляю данные в массив?

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

Ответы [ 3 ]

0 голосов
/ 26 декабря 2011

Я не совсем уверен, соответствует ли это вашим ожиданиям, но в вашем первом случае можно использовать 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 голосов
/ 26 декабря 2011

Добавление к массиву с помощью [] скобок добавляется численно. Если бы в вашем массиве была одна существующая запись, добавление добавилось бы к индексу 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 голосов
/ 26 декабря 2011

Попробуйте

var_dump($overr[$arrayNumber]['selector']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...