例如,我有2个数组,
$array_1 = array('100','250','300','50');
$array_2 = array('a','b','c','d');
下一步:我将对数组1进行排序并将2个数组传递给一个函数,例如该函数将返回大于100的值。
注意:根据值进行排序很重要。(降序)。
像: 我们正在传递的数组
rsort($array_1);
$return = parse($array_1,$array_2);
echo "<pre>";
print_r($return);
function parse(array $arr1,array $arr2){
$retArr1 = array();
$retArr2 = array();
foreach($arr1 as $k=>$value){
if($value > 100){
$retArr1[] = $value;
$retArr2[] = $arr2[$k];
}
}
return array($retArr1,$retArr2);
}
输出就像
Array
(
[0] => Array
(
[0] => 300
[1] => 250
)
[1] => Array
(
[0] => a
[1] => b
)
)
但我想要
Array
(
[0] => Array
(
[0] => 300
[1] => 250
)
[1] => Array
(
[0] => c
[1] => b
)
)
答案 0 :(得分:1)
// sort both arrays
array_multisort($array_1, SORT_DESC, $array_2);
// Take items from array while values of the 1st array > 100
$i = 0;
$res = [];
while ($i < count($array_1) and $array_1[$i] > 100) {
$res[0][] = $array_1[$i];
$res[1][] = $array_2[$i++];
}
print_r($res);
<强> demo 强>
答案 1 :(得分:0)
您可以在parse
函数中创建一些数组变量,在foreach
循环中使用它们来构建您希望从作为参数传递给函数的2个数组中提取的数据。下面的代码说明了如何:
<?php
$array_1 = array('100','250','300','50');
$array_2 = array('a','b','c','d');
function parse(array $arr1,array $arr2) {
$tmpArr1 = $tmpArr2 = $arrReturn = array();
foreach ($arr1 as $k => $value) {
if ($value > 100) {
$tmpArr1[] = $value;
$tmpArr2[] = $arr2[$k];
}
}
$arrReturn['arr1'] = $tmpArr1;
$arrReturn['arr2'] = $tmpArr2;
return $arrReturn;
}
$return = parse($array_1, $array_2);
var_dump($return);
// DISPLAYS:
array (size=2)
'arr1' =>
array (size=2)
0 => string '250' (length=3)
1 => string '300' (length=3)
'arr2' =>
array (size=2)
0 => string 'b' (length=1)
1 => string 'c' (length=1)
使用带有数字指数的阵列
<?php
$array_1 = array('100','250','300','50');
$array_2 = array('a','b','c','d');
function parse(array $arr1,array $arr2) {
$tmpArr1 = $tmpArr2 = $arrReturn = array();
foreach ($arr1 as $k => $value) {
if ($value > 100) {
$tmpArr1[] = $value;
$tmpArr2[] = $arr2[$k];
}
}
$arrReturn[] = $tmpArr1;
$arrReturn[] = $tmpArr2;
return $arrReturn;
}
$return = parse($array_1, $array_2);
var_dump($return);
// DISPLAYS:
array (size=2)
0 =>
array (size=2)
0 => string '250' (length=3)
1 => string '300' (length=3)
1 =>
array (size=2)
0 => string 'b' (length=1)
1 => string 'c' (length=1)
答案 2 :(得分:0)
<?php
$array_1 = array('100','250','300','50');
$array_2 = array('a','b','c','d');
$def = array_combine($array_2, $array_1);
asort($def);
$array = array_filter($def, function($val) {
return $val>100;
});
var_dump($array);
//array(2) {
// ["b"]=>
// string(3) "250"
// ["c"]=>
// string(3) "300"
//}
然后获取密钥和值。
答案 3 :(得分:0)
嘿,你只犯了一个错误,尝试下面的代码肯定会给你的欲望输出:
<?php
$array_1 = array('100','250','300','50');
$array_2 = array('a','b','c','d');
arsort($array_1); // make it correct, this was only the mistake done by you.
$return = parse($array_1,$array_2);
function parse(array $arr1,array $arr2){
$retArr1 = array();
$retArr2 = array();
foreach($arr1 as $k=>$value){
if($value > 100){
$retArr1[] = $value;
$retArr2[] = $arr2[$k];
}
}
return array($retArr1,$retArr2);
}
echo "<pre>";
print_r($return);
?>