Задать вопрос

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 но модифицирована на само обучения.
Модифицировал не я. Я занимаюсь миграций в другой проект.
  • Вопрос задан
  • 160 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 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
@part_os
Сложное в простом
Жесть какая то. Напишите код с осмыслеными переменными. И по PSR-12 и PSR-2 не забудьте.
Ответ написан
Ваш ответ на вопрос

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

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