Как разбить массив на два разных массива без использования цикла? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть массив, который содержит значение, показанное ниже

array:2 [▼
  0 => "11"
  1 => "A_15"
]

Как я могу разделить его на 2 массива?

//example
array1 store 11
array2 store 15

Я использую A_ как указатель, чтобы определить, какой массивдолжен хранить какое значение.

Что я пробовал

$arr1 = array_filter($myArr, function($v) { return strpos($v, 'A_') === false; });
$arr2 = array_filter($myArr, function($v) { return strpos($v, 'A_') !== false; });

Как я могу сохранить значение, удалив инфотрон A_?

Или есть ли лучший способ сделать это без использования циклов?

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Вы также можете использовать метод .splice () для разделения на основе ситуационной логики:

var array1=[11,15];
var array2=array1.splice(0,1);

ИЛИ

var array1=[11,15,1,2,3,4];
var array2=array1.splice(0,3);

В обоих случаях массив2 будет содержать первую часть, а массив1 будетесть вторая часть.

0 голосов
/ 06 июня 2018

Чтобы разделить ваши значения на 2 массива, вы можете использовать array_map с ltrim , чтобы удалить префикс A_ из значения, а затем использовать array_chunk дляразбить массив на массивы.

$myArr = ['11', 'A_15'];
$myArr = array_chunk(array_map(function($x) { return ltrim($x, 'A_');}, $myArr), 1);
list($a1, $a2) = $myArr;
var_dump($a1);
var_dump($a2);

Демо

Это даст вам 2 массива:

array(1) {
  [0]=>
  string(2) "11"
}
array(1) {
  [0]=>
  string(2) "15"
}
0 голосов
/ 06 июня 2018

Вы можете сделать что-то вроде:

$arr = ["A_15","11"];

sort($arr);                        //Sort the array, which means string starts with letters will go last (A_)
list($arr1, $arr2) = $arr;         //Assign the first element to $arr1, 2nd elemnt to $arr2

$arr2 = substr($arr2, 2);          //Remove the first 2 characters "A_"

Это приведет к:

$arr1 = 11
$arr2 = 15

Документ: sort () , list ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...