如何在不使用循环的情况下将数组拆分为两个不同的数组?

时间:2018-06-06 03:10:46

标签: php arrays laravel

我有一个包含如下所示值的数组

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_ infront来存储值?

或者在不使用循环的情况下更好的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

$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()

答案 1 :(得分:0)

您还可以使用.splice()方法根据情境逻辑进行拆分:

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

OR

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

在这两种情况下,array2将保存第一部分,array1将具有第二部分。

答案 2 :(得分:0)

要将值拆分为2个数组,可以使用array_mapltrim从值中删除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);

Demo

这将为您提供2个阵列:

array(1) {
  [0]=>
  string(2) "11"
}
array(1) {
  [0]=>
  string(2) "15"
}