Как преобразовать значение массива с одной запятой в значение с несколькими ключами

Я хочу преобразовать приведенное ниже значение

Array
(
   [0]=>4,9
)

к этому значению

Array
(
   [0]=>4
   [1]=>9
)

Зейн Фарук, ты знаешь ответ?

Sheenu 12.02.2019 08:37

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

Gajanan Kolpuke 12.02.2019 08:39

Можете ли вы объяснить, как вы создали исходный массив? Для меня и первый, и второй массив одинаковы

Nico Haase 12.02.2019 09:22

@NicoHaase выходные данные, скорее всего, являются print_r, поэтому они не совпадают. 3v4l.org/АВФЛИ

Andreas 12.02.2019 10:05
Стоит ли изучать 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 и хотите разрабатывать...
2
5
89
5

Ответы 5

Вы можете использовать следующее решение:

<?php
//the current array and an empty new array to get the result.
$cur_array = [0 => "4,9", 1 => "5,9"];
$new_array = [];

//run through all array values to convert these.
for ($i = 0; $i < count($cur_array); $i++) {

    //get an array of the comma separated list.
    $part = explode(',', $cur_array[$i]);

    //add the array of comma separated list to the new array (result).
    $new_array = array_merge($new_array, $part);
}

//convert all string values to integer values.
for ($j = 0; $j < count($new_array); $j++) {
    $new_array[$j] = intval($new_array[$j]);
}

//output of the new array (debug).
var_dump($new_array);

demo:https://ideone.com/1WFv4V

... или следующее более компактное решение с использованием array_values:

<?php
$oldarr = [0 => "4,9", 1 => "5,9"];
$newarr = [];

foreach (array_values($oldarr) as $arrpart) {
    $newarr = array_merge($newarr, explode(',', $arrpart));
}

var_dump($newarr);

Если ваши значения представляют собой десятичные числа, вы можете использовать следующее:

<?php
$oldarr = [0 => 4.9, 1 => 5.9, 2 => 6];
$newarr = [];

foreach (array_values($oldarr) as $arrpart) {
    $newarr = array_merge($newarr, explode('.', $arrpart));
}

var_dump($newarr);

@Sheenu, почему этот ответ бесполезен? опиши подробнее, что именно тебе нужно.

Sebastian Brosch 12.02.2019 08:55

@Sheenu Тогда вам, вероятно, следует расширить свой вопрос. «Проверьте мой вопрос» немного сбивает с толку, учитывая, что он содержит так мало усилий и контекста.

mario 12.02.2019 08:58
$oldarr = [0 => 4,9];

$string = implode(',',$oldarr);

$new_array = explode(',',$string);

print_r($new_array);

Это делается именно так, как вы просите, но вы должны обязательно зацикливаться, как показано @Sebastian Brosch.

Cliff Rono 12.02.2019 08:59

Массив ([0]=>4,9)

Sheenu 12.02.2019 09:10

и какое значение вы принимаете в переменной

Sheenu 12.02.2019 09:10

@Sheemu - будьте более ясны в своем вопросе!$arr = [0 => 4,9]; - это $arr = [0 => 4, 1 => 9]; (значение, которое вы хотите) - ideone.com/OuUGwU.

Sebastian Brosch 12.02.2019 09:20

Это не работает должным образом: проверьте, что содержит $oldarr в начале. Действительно ли нет содержит то же значение, что и OP

Nico Haase 12.02.2019 09:21
$array = array( 0 => '4,9');
foreach($array as $data){
  $commaSeparatedArr =  explode(',',$data); 
}
print_r($commaSeparatedArr);

Добро пожаловать в СО! Пожалуйста, имейте в виду, что ценность ответов часто является объяснением. Дампы кода менее полезны для будущих посетителей.

mario 12.02.2019 08:59

Замените значение массива.

$array = ["4,9,7,14", "7,9,68"];
$new_array = [];
foreach($array as $a) {
   array_map(function($a_r) {
      $new_array[] = (int) $a_r
   }, exlpode(",", $a));
}

var_dump($new_array);

/* Output
Array (
  [0] => int 4,
  [1] => int 9,
  [2] => int 7,
  [3] => int 14,
  [4] => int 7,
  [5] => int 9,
  [6] => int 68
)
*/

С чего вы взяли, что исходный массив содержит строку?

Nico Haase 12.02.2019 09:23

я думаю, что это правильно, посмотрите новый ответ. Я должен быть рядом с вашими потребностями.

Pascal Tovohery 12.02.2019 13:16

Используйте взрыв и взрыв.
Сначала вы взрываете все значения в массиве с запятыми между ними, а затем взрываете запятую.

$result = explode(",", implode(",", $array));

См. пример: https://3v4l.org/JGOAB

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