PhP добавить в массив недостающий ключи?

Извинюсь за глупый вопрос.

<?php

$samples = [];
$labels = [];
foreach($arr as $key=>$values)
{
    foreach($values as $value)
    {
        $labels[]=$key;
        $chars = preg_split('//u', $value, NULL, PREG_SPLIT_NO_EMPTY);
        $code = [];
        foreach($chars as $char)
            $code[]=IntLChar::ord($char);
        
        if(count($code) < 10)
        {
            $i=count($code);
            while($i<=10)
            {
                $code[]=0;
                $i++;
            }
        }
        
        $samples[]=$code;
    }
}

// ============================
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

$str="кик-долашрп";
$chars = preg_split('//u', $str, NULL, PREG_SPLIT_NO_EMPTY);
$a = [];
foreach($chars as $char)
    $a[]=IntLChar::ord($char);

echo $classifier->predict($a);
?>


Как сделать так чтобы массив а добавлялись недостающий ключи.

Я пробовал так: но не получается:
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

$str="кик-долашрп";
$chars = preg_split('//u', $str, NULL, PREG_SPLIT_NO_EMPTY);
$a = [];
foreach($chars as $char)
    $a[]=IntLChar::ord($char);
    
    if(count($a) < 10)
        {
            $o=count($a);
            while($o<=10)
            {
                $a[]=0;
                $o++;
            }
        }
        $aa = [];
        $a[]=$aa;

echo $classifier->predict($aa);

Подскажите где ошибка?

Я сильно редачить не могу, то нейронная сеть начнёт шалить, если редачить то всё нейронку.
сама Библиотека https://github.com/php-ai/php-ml но модифицирована на само обучения.
Модифицировал не я. Я занимаюсь миграций в другой проект.
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@silik Автор вопроса
Нужно просто добавить это
if(count($a) < 10)
{
$o=count($a);
while($o<=10)
{
$a[]=0;
$o++;
}
}
после этого
foreach($chars as $char)
$a[]=IntLChar::ord($char);

Для проверки массива print_r($a);

должно получится так

$str="кик-долашрп";
$chars = preg_split('//u', $str, NULL, PREG_SPLIT_NO_EMPTY);
$a = [];

foreach($chars as $char)
$a[]=IntLChar::ord($char);

if(count($a) < 10)
{
$o=count($a);
while($o<=10)
{
$a[]=0;
$o++;
}
}

echo $classifier->predict($a);

Ошибка:
$aa = [];
$a[]=$aa;

Небольшой совет лучше переменный переименовать: чтобы совпадений не было.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@part_os
Жесть какая то. Напишите код с осмыслеными переменными. И по PSR-12 и PSR-2 не забудьте.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 100 000 руб.
Vigrom Москва
До 150 000 руб.
Teamlead Ставрополь
от 25 000 до 50 000 руб.
15 нояб. 2019, в 16:24
5000 руб./за проект
15 нояб. 2019, в 16:13
5000 руб./за проект
15 нояб. 2019, в 15:49
10000 руб./за проект