Ключ динамического массива в цикле while - PullRequest
1 голос
/ 18 февраля 2010

Я пытаюсь заставить это работать:

У меня есть массив, который "углубляется" в каждом цикле. Мне нужно добавить новый массив к самому глубокому «детскому» ключу.

while($row = mysql_fetch_assoc($res)) {
    array_push($json["children"],
                        array(
                            "id" => "$x",
                            "name" => "Start",
                            "children" => array()
                        )
                    );
}

Итак, в цикле это будет:

array_push($json["children"] ...
array_push($json["children"][0]["children"] ...
array_push($json["children"][0]["children"][0]["children"] ...

... и так далее. Любая идея о том, как получить динамический ключ-селектор, как это?

$selector = "[children][0][children][0][children]";
array_push($json$selector);

Ответы [ 3 ]

3 голосов
/ 18 февраля 2010
$json = array();
$x = $json['children'];
while($row = mysql_fetch_assoc($res)) {
    array_push($x,
                array(
                    "id" => "$x",
                    "name" => "Start",
                    "children" => array()
                )
            );
    $x = $x[0]['children'];
}
print_r( $json );
1 голос
/ 18 февраля 2010

Хммм - может быть, лучше назначить по ссылке:

$children =& $json["children"];
while($row = mysql_fetch_assoc($res)) {
    array_push($children,
        array(
            "id" => "$x",
            "name" => "Start",
            "children" => array()
        )
    );
    $children =& $children[0]['children'];
}
0 голосов
/ 18 февраля 2010
$json = array();
$rows = range('a', 'c');
foreach (array_reverse($rows) as $x) {
    $json = array('id' => $x, 'name' => 'start', 'children' => array($json));
}
print_r($json);

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

function f($arr, $indices) {
    foreach ($indices as $key) {
        if (!isset($arr[$key])) {
            return null;
        }
        $arr = $arr[$key];
    }
    return $arr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...