从 php 中的现有数组创建新数组
Creating new array from existing arrays in php
我正在尝试创建一个新数组,其中包含来自预先存在的数组的值。
<?php
$array1 = array(
0 => 101,
1 => 102,
2 => 121,
3 => 231,
4 => 232,
5 => 233
);
$array2 = array(
0 => 58,
1 => 98,
2 => 45,
3 => 48,
4 => 45,
5 => 85
);
$result = array();
请注意,第一个元素来自 $array1
,第二个元素来自 $array2
,依此类推。
非常感谢任何指点。
您可以尝试使用 for
或 foreach
循环(如果 $array1
和 $array2
具有相同数量的具有相同索引的元素):
$result = array();
for($i = 0; $i < count($array1); $i++){
$result[] = $array1[$i];
$result[] = $array2[$i];
}
[]
为您提供了 不指定索引 的功能,因此您可以将它们从每个数组一个一个地推入结果数组。
Example with for loop
Example with foreach loop
还有一种更直接的方法,不用担心丢失索引和元素:
$i = 0;
foreach($array1 as $v){
$result[$i] = $v;
$i = $i+2;
}
$i = 1;
foreach($array2 as $v){
$result[$i] = $v;
$i = $i+2;
}
ksort($result);
Example
看起来有点繁琐,可以自己写个函数让它更优雅:
function build_array(&$array, $input, $counter){
foreach($input as $v){
$array[$counter] = $v;
$counter = $counter+2;
}
}
build_array($result, $array1, 0);
build_array($result, $array2, 1);
ksort($result);
Example
如何实现的示例:
$array = array(4,5,6);
$array2 = array(8,9,0,12,44,);
$count1 = count($array);
$count2 = count($array2);
$count = ($count1 > $count2) ? $count1 : $count2;
$rez = array();
for ($i = 0; $i < $count; $i++) {
if ($i < $count1) {
$rez[] = $array[$i];
}
if ($i < $count2) {
$rez[] = $array2[$i];
}
}
var_dump($rez);
结果将是一个数组
array(8) {
[0]=>
int(4)
[1]=>
int(8)
[2]=>
int(5)
[3]=>
int(9)
[4]=>
int(6)
[5]=>
int(0)
[6]=>
int(12)
[7]=>
int(44)
}
但如果您需要保存空值,您可以删除
这会检查 if ($i < $count2)
我正在尝试创建一个新数组,其中包含来自预先存在的数组的值。
<?php
$array1 = array(
0 => 101,
1 => 102,
2 => 121,
3 => 231,
4 => 232,
5 => 233
);
$array2 = array(
0 => 58,
1 => 98,
2 => 45,
3 => 48,
4 => 45,
5 => 85
);
$result = array();
请注意,第一个元素来自 $array1
,第二个元素来自 $array2
,依此类推。
非常感谢任何指点。
您可以尝试使用 for
或 foreach
循环(如果 $array1
和 $array2
具有相同数量的具有相同索引的元素):
$result = array();
for($i = 0; $i < count($array1); $i++){
$result[] = $array1[$i];
$result[] = $array2[$i];
}
[]
为您提供了 不指定索引 的功能,因此您可以将它们从每个数组一个一个地推入结果数组。
Example with for loop
Example with foreach loop
还有一种更直接的方法,不用担心丢失索引和元素:
$i = 0;
foreach($array1 as $v){
$result[$i] = $v;
$i = $i+2;
}
$i = 1;
foreach($array2 as $v){
$result[$i] = $v;
$i = $i+2;
}
ksort($result);
Example
看起来有点繁琐,可以自己写个函数让它更优雅:
function build_array(&$array, $input, $counter){
foreach($input as $v){
$array[$counter] = $v;
$counter = $counter+2;
}
}
build_array($result, $array1, 0);
build_array($result, $array2, 1);
ksort($result);
Example
如何实现的示例:
$array = array(4,5,6);
$array2 = array(8,9,0,12,44,);
$count1 = count($array);
$count2 = count($array2);
$count = ($count1 > $count2) ? $count1 : $count2;
$rez = array();
for ($i = 0; $i < $count; $i++) {
if ($i < $count1) {
$rez[] = $array[$i];
}
if ($i < $count2) {
$rez[] = $array2[$i];
}
}
var_dump($rez);
结果将是一个数组
array(8) {
[0]=>
int(4)
[1]=>
int(8)
[2]=>
int(5)
[3]=>
int(9)
[4]=>
int(6)
[5]=>
int(0)
[6]=>
int(12)
[7]=>
int(44)
}
但如果您需要保存空值,您可以删除
这会检查 if ($i < $count2)