Intereting Posts

Функция PHP возвращает NULL вместо массива

Я вызываю функцию, которая выполняет некоторую рекурсию и должна возвращать массив. Фактически, var_dump непосредственно перед оператором return в вызываемой функции выводит массив; однако var_dump результатов от вызывающей функции показывает NULL вместо массива.

Вот вызывающая функция.

<?php // configuration require_once("../includes/config.php"); require_once("../includes/getParentNodes.php"); $bottomNode = 17389; $chain = []; $chain[] = $bottomNode; $results = getParentNodes($bottomNode,$chain); var_dump($results); ?> 

Вот вызванная функция.

 <?php function getParentNodes($node, $results) { $select = query("SELECT parent_id FROM classifications WHERE node_id = ?", $node); $parent = implode("",$select[0]); if (!empty($parent)) { $results[] = $parent; getParentNodes($parent,$results); } else { return $results; } } ?> 

Если я поместил var_dump непосредственно перед обратным вызовом, я получаю следующее.

 Array ( [0] => 17389 [1] => 17386 [2] => 17334 [3] => 16788 [4] => 15157 [5] => 10648 [6] => 3962 [7] => 665 [8] => 39 [9] => 1 ) 

Однако var_dump в вызывающей функции создает NULL.

Я прочитал руководство и связанные с ним должности, но никто не прояснил эту проблему. Любая помощь приветствуется.

Solutions Collecting From Web of "Функция PHP возвращает NULL вместо массива"

Вам не хватает return в рекурсивном случае.

  $results[] = $parent; return getParentNodes($parent,$results); 

В коде есть небольшая ошибка:

 function getParentNodes($node, $results) { $select = query("SELECT parent_id FROM classifications WHERE node_id = ?", $node); $parent = implode("",$select[0]); if (!empty($parent)) { $results[] = $parent; return getParentNodes($parent,$results); // <- modified } else { return $results; } }