Я хочу сделать массив [1,2,3,4,5,6,7,8,9,10,11] в массив [1,2,3,4,5,6,7,8,9,1 ,0,1,1] используя только этот алгоритм

Я пытаюсь вставить новый массив в массив

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

<?php
literal(12);
function literal($sum){
$n;
for($i=0;$i<$sum;$i++){
 $n[] = $i+1;
 echo $n[$i];
 $length = strlen($n[$i]);//count length reset every loop
 $keeper = $n[$i]; //store on new variable reset every loop
 for($m=0;$m<$length;$m++){
   if ($keeper>=10){//just skip if below ten
     $newstore[$m] = $keeper%(10^($length-($m+1)));
     $keeper = floor($keeper/10);
   }else {
     $newstore[$m] = $keeper;// this value to keep array and reset it, then keep it again
   }
  }
  $newstored = array_reverse($newstore);//reverse it and reset again
  for($a=0;$a<count($newstored);$a++){
      $fixed[] = $newstored[$a];
  }
}
echo nl2br("\n".count($n)."\n");
for($i=0;$i<count($fixed);$i++){
    echo $fixed[$i];
}
echo nl2br("\n".count($fixed));
}
?>

результат, который я хочу, был [1,2,3,4,5,6,7,8,9,1,0,1,1,1,2] фактический результат, который я получил [1,2,3,4,5,6,7,8,9,1,1,0,1,1,0,1,1]

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
283
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
$ar = range(1,12);
// split each item
$ar = array_map('str_split', $ar);
// flatten array
$ar = array_merge(...$ar);
print_r($ar);

РЕДАКТИРОВАТЬ

Чтобы ваш код работал, просто измените его на

 $newstore[$m] = $keeper%10; 

Или, если вы хотите разделить на десять, не меняйте начальное значение

Чем просто изменить на $newstore[$m] = $keeper%10;

splash58 13.07.2019 11:34

Я думаю, что результат отличался от моего. Потому что я тоже хочу умножить это.

GigaPudding 13.07.2019 11:38

@GigaPudding Ты уверен?

splash58 13.07.2019 11:40

мне нужно сохранить $newstore[$m] = $keeper%(10^($length-($m+1))); потому что этот диапазон ввода до 10k

GigaPudding 13.07.2019 11:40

Можем ли мы просто сосредоточиться на моем коде, пожалуйста, я почти уверен, что я правильно сделал свой код, просто там что-то не так

GigaPudding 13.07.2019 11:46

просто измените на $newstore[$m] = $keeper%10; - sandbox.onlinephpfunctions.com/code/…

splash58 13.07.2019 11:49

10^(length-($m+1)) такой же, как 10^(2-1), который есть 10, мне нужно сохранить (10^($length-($m+1))), потому что $length может быть 1-5

GigaPudding 13.07.2019 11:55

о, я понял, ты прав. просто измените на $keeper%10, не нужно модифицировать на 100 или 1000.

GigaPudding 13.07.2019 11:59

Другой способ, простой foreach() и str_split(),

<?php
$array = range(1,20);
$result = [];
foreach($array as $num){
    if (strlen($num) < 2){
        $result[] = $num;
    }else{
        $parts = str_split($num);
        $result = array_merge($result,$parts);
    }
}
print_r($result);
?>

РАБОЧАЯ ДЕМО:https://3v4l.org/QXRrW

это просто и правильно, но мне нужен другой ответ. Вы можете исправить меня в моем коде. что я сделал не так?

GigaPudding 13.07.2019 11:49

Чтобы получить желаемый результат, вы можете использовать спектр от 1 до 12 и использовать взрываться, чтобы превратить это в строку.

Затем используйте str_split для создания результирующего массива.

$res = str_split(implode(range(1,12)));
print_r($res);

Результат:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 1
    [10] => 0
    [11] => 1
    [12] => 1
    [13] => 1
    [14] => 2
)

демонстрация Php

@Giga Это лучший ответ. Используйте этот; это не становится чище, чем это.

mickmackusa 13.07.2019 12:39

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

GigaPudding 13.07.2019 13:20

Другие вопросы по теме