我需要抓取数组(数组内部)中的数据,这些数据只会抓取每行的第二行和第三行。
<?php
$salaries = array(
//I WANT TO MAKE A NEW ARRAY FROM ALL THE SECOND AND THE THIRD ROWS
"a" => 2000, 1500, 3000, 1950
"b" => 1000, 2300, 2233, 2400
"c" => 500 , 6590, 1024, 2048
//FOR EXAMPLE RESULTS IN THIS CASE WOULD BE :
//$newarray = array(1500,3000,2300,2233,6590,2048);
);
?>
如果没有该循环的直接命令就可以:)
谢谢!
首先,数组声明在语法上无效。
如果你的意思是它是一个多维数组,如下所示:
$salaries = array(
"a" => array(2000, 1500, 3000, 1950),
"b" => array(1000, 2300, 2233, 2400),
"c" => array(500 , 6590, 1024, 2048)
);
然后,可以使用两个循环来完成此操作。在第一个循环中,遍历所有子数组。遍历每个子数组中的值,检查该值是第二个还是第三个。如果是这样,请将其添加到新数组中:
foreach ($salaries as $key => $arr) {
for ($i=0; $i < count($arr); $i++) {
if ($i == 1 || $i == 2) {
$result[$key][] = $arr[$i];
}
}
}
print_r($result);
演示
为了完整起见,我将为值是逗号分隔的字符串而不是数组的情况添加解决方案:
$salaries = array(
"a" => '2000, 1500, 3000, 1950',
"b" => '1000, 2300, 2233, 2400',
"c" => '500 , 6590, 1024, 2048'
);
逻辑完全相同,但不是直接访问内部数组元素,而是必须使用 explode()
来创建值数组。然后使用 array_slice()
获取第二个和第三个元素,并从中创建一个新数组:
$result = array();
foreach ($salaries as $key => $value) {
$pieces = explode(', ', $value);
$slice[$key] = array_slice($pieces, 1, 2);
$result = array_merge($result, $slice);
}
演示