У меня есть этот массив, как я могу вставить эти данные в базу данных? и как я могу проверить, есть ли у какого-либо элемента в массиве [children]
Я хочу вставить данные в базу данных, используя
id, parent_id, уровень, порядок
примечание: у какого-то элемента есть дочерний элемент, а у какого-то элемента нет, а у какого-то дочернего элемента есть ребенок, в моем массиве 7 уровней
Array ( [0] => Array ( [id] => 5 [children] => Array ( [0] => Array ( [id] => 4 [children] => Array ( [0] => Array ( [id] => 11 ) ) ) ) ) [1] => Array ( [id] => 7 [children] => Array ( [0] => Array ( [id] => 9 ) ) ) [2] => Array ( [id] => 6 ) [3] => Array ( [id] => 8 ) [4] => Array ( [id] => 10 ) )
Используйте рекурсию, такую как следующее (я не знаю, какой order
должен означать, поэтому он не учитывается).
function insert_array( $children, $parent_id, $level ){ foreach( $children as $child ){ insert_array_item( $child, $parent_id, $level ); } } function insert_array_item( $item, $parent_id, $level ){ //you need to get the $db here first $statement = $db->prepare( "INSERT INTO `table` VALUES (:id, :parent_id, :level ) " ); $statement->bindParam( ':id', $item['id'] ); $statement->bindParam( ':parent_id', $parent_id ); $statement->bindParam( ':level', $level ); $statement->execute(); if( isset( $item['children'] ) ){ insert_array( $item['children'], $parent_id = $item['id'], $level + 1 ); } } insert_array( $array, 0, 0 );