#php #navigation #parent
#php #навигация #родительский
Вопрос:
я пытаюсь создать структуру навигации перетаскивания (с использованием пользовательского интерфейса jquery). Я думаю, что я выполнил часть jquery, которая находит все «страницы», у которых нет дочерних элементов, и работает в обратном направлении, чтобы создать brach, и все ветви затем передаются на сервер.
допустим (в небольшом масштабе для тестирования) После объединения ветвей я получаю следующий массив:
Array
(
[post-id-2] => Array
(
[post-id-5] =>
)
[post-id-3] => Array
(
[post-id-4] => post-id-1
)
)
Итак, теперь я хочу обновить свою таблицу навигации, чтобы установить правильный идентификатор страницы с помощью page_parentid поэтому я попробовал следующее, но ничего не добился:
$array = array();
$query_str = '';
foreach( $_POST['branch'] as $branch ) {
eval('$array = array_merge( $array, ' . $branch . ');');
}
function recrusive_parent_child( $parent, $array ) {
$str = $parent;
if( is_array( $array ) ) {
foreach( $array as $parent => $branch ) {
$str .= recrusive_parent_child( $parent, $branch );
}
}else{
return $str;
}
}
foreach( $array as $parent => $branch ) {
echo recrusive_parent_child( $parent, $branch );
}
print_r($array);
die();
но отображается только исходный объединенный массив, ничего из функции. Кто-нибудь может подтолкнуть меня в правильном направлении?
Комментарии:
1. Почему вы используете eval в
eval('$array = array_merge( $array, ' . $branch . ');');
? Почему бы просто не использовать$array = array_merge( $array, $branch);
Также, не могли бы вы опубликовать точный выводprint_r($array);
иprint_r($_POST);
?
Ответ №1:
Возможно, это потому, что array_merge ничего не делает, но это действительно зависит от ваших входных данных. Давайте возьмем первую итерацию foreach в вашем примере, там строка, которая передается в eval(), является:
$array = array_merge( $array, Array);
Это потому $branch
, что это массив, а массив, преобразованный в строку, является «массивом».
Однако это должно выдать вам «синтаксическую ошибку в коде eval’d», потому что «array» является зарезервированным словом и за ним должно следовать «(«.
Вы действительно должны избавиться от eval()-решения. Опубликуйте желаемый результат, и мы поможем вам найти правильное решение.
Комментарии:
1. jquery создает массив php, eval просто вводит его в действие