Nano Hash - криптовалюты, майнинг, программирование

Функция php, возвращающая нулевое значение

Я рекурсивно ищу узел дерева для его родителей, а затем пытаюсь вернуть его родительские категории в массиве.

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

Несмотря на то, что в этом массиве есть элементы, оператор перед возвратом при просмотре вне функции равен nul.

Чтобы заставить его работать, я просто сделал параметр по ссылке. Но почему всегда nul?

Вот мой код:

function getParent($id,$parents){ // to work changed this to getParent($id,&$parents)

    if($id < 2) { // 1 is the Top of the Tree , so job is done
        return $string;    
    }

     $child = DB::fetchExecute((object)array( // pdo query for category to get parents
     'sql'   => "category",
     'values'=>  array($id),
     'single'=>  1,
     'debug' =>  0)
     );

    $parent = DB::fetchExecute((object)array( // pdo query for parents info
        'sql'   => "category",
        'values'=>  array($child->native_parent_category_id),
        'single'=>  1,
        'debug' =>  0)
    );
    $string[]= "<li>$parent->name ($parent->native_category_id)</li>
        ";        

    getParent($parent->native_category_id , $parents);    
}

// call function
$array = array();
$returnString = getParent($id,$string);

var_dump($returnString,$array); // will both be NULL, or if called by Reference $array has the goods

?>
11.04.2013

  • $string возвращается без установки, если $id < 2. Вы только устанавливаете его, но никогда не передаете его рекурсивному вызову 12.04.2013

Ответы:


1

Изменять:

function getParent($id,$parents){

To:

function getParent($id,$parents, $string){

И изменить:

getParent($parent->native_category_id , $parents);

To:

getParent($parent->native_category_id , $parents, $string);

Область $string существует только в функции во время ее выполнения, поэтому, если вы повторно запустите функцию, она сбросит все переменные внутри нее. Вам нужно отправлять переменную каждый раз, когда вы перезапускаете ее.

11.04.2013

2

Я бы объявил $string перед функцией, а внутри функции использовал global $string; сверху.

11.04.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..