@alexwisebw

Что не так с этой рекурсивной функцией?

Здрасьте, я баран.
Подскажите, что здесь не так, почему возвращает пустой массив и вообще как бы это выглядело будь у меня руки вместо копыт.

function RecursiveTest($parent_id) {
	$children = array();

	$args = array(
		'post_type' => 'Something',
		'post_parent' => $parent_id,
		'posts_per_page' => 100
	);

	$query_result= new WP_Query($args);

	for ($i=0; $i < count($query_result->posts); $i++) {
  	$gchildren = RecursiveTest($query_result->posts[$i]->ID);
	}
	if( !empty($gchildren) ) {
		$children = array_merge($children, $gchildren);
	}
	$children = array_merge($children, $query_result);
	return $children;
}


Делаю так

$test = RecursiveTest(get_the_ID()); // с ID все в порядке
echo count($test); // 0


Почему?

P.S.
Изначально было так, но и так и так на выходе пустой массив как правильно сделать, не подскажете?

....................
	for ($i=0; $i < count($query_result->posts); $i++) {
  	$gchildren = RecursiveTest($query_result->posts[$i]->ID);
		if( !empty($gchildren) ) {
			$children = array_merge($children, $gchildren);
		}
	}

	$children = array_merge($children, $query_result);
	return $children;
.....................
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
не знаток wp, но судя по коду вот этот код:
if( !empty($gchildren) ) {
    $children = array_merge($children, $gchildren);
  }
  $children = array_merge($children, $query_result);

сработает только 1 раз, он же после самой рекурсии, смысл рекурсии? Она ничего не передает ничего не меняет. $gchildren постоянно перезаписывается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы