能不能实现一个功能?让数组$arr里的元素依次和数组$arr2里的元素进行匹配,当和数组$arr2里的元素相匹配时,则显示该元素。否则显示为'-'。请问怎么做?$arr = Array
(
'1' => bin1|0|0|0|1000|500|400|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
'2' => bin2|0|0|0|0|0|2000|1000|600|500|0|100|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
)
//以上数组是假设的已获得的bin=>test item数组,肉眼可知bin1的1出现次数最多项为4,bin2为6
//以下为你本贴给出的类似数组。
$arr2 = array(
1=>array(2,4,6,7,8),//应显示为7
2=>array(3,5,6,10,22)// 应显示为-
(
'1' => bin1|0|0|0|1000|500|400|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
'2' => bin2|0|0|0|0|0|2000|1000|600|500|0|100|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
)
//以上数组是假设的已获得的bin=>test item数组,肉眼可知bin1的1出现次数最多项为4,bin2为6
//以下为你本贴给出的类似数组。
$arr2 = array(
1=>array(2,4,6,7,8),//应显示为7
2=>array(3,5,6,10,22)// 应显示为-
解决方案 »
- 紧急求救,关于php连接db2的操作
- windows下面搭配nginx+PHP的环境求助
- 新手PHP求助,各位来看看
- PHP中文件上传时的判断用户是否选择文件的问题
- 项目服务计划怎么写?
- mysql4.1以下版本不支持嵌套查询?
- 一个简单的php问题。
- 如何通过第一个select选择的值改变第二个select的option
- disucz x3.2 nginx 如何批量做301重定向
- PHP问题请教一下 PHP+JS 两个文件在主的PHP文件 index.php中增加一个下拉列表框,通过点击这个 下拉列表框获取值,并在这个列表框后直
- PHP URL传递中文出现乱码
- 怎么触发textarea里文本显示
类似于Array([0]=>0 [1]=>0 [2]=>0 ... [7]=>300 ... [160]=>0)
最后一个问题,问完后就可以开工了kaka
你的$arr[1]或者[2]后面那一长串东西是已经放到数组里了还是仅仅是以string方式储存的一串
就比如说你的$arr格式是:$arr = array(
[1]=>string(333)"bin1|0|0|0......."
[2]=>string(336)"bin2|0|0|0......."
)还是$arr = array(
[1]=>array(**)([0] =>"bin1" [1] => 0.......)
[2]=>array(**)([0] =>"bin2" [1] => 0.......)
)
{
$str = preg_replace("/([^\d])0|/","",$str."|");
$len = substr_count($str,"|");
$len -=2;
if($len < 0 || count($arr2) <= $len)
echo "-";
else
echo $arr2[$len];}
{
$nbr = array_count_values($arr1[$key]);
$keys = count($arr1[$key]) - $nbr[0] - 2;
if (!isset($arr2[$key][$keys]))
echo "Error : -";
else
echo $arr2[$key][$keys];
}
俺是用另一种方法做的lz自己决定吧^^
(
'1' =>"bin1|0|0|0|1000|500|400|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
'2' => "bin2|0|0|0|0|0|2000|1000|600|500|33|100|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0"
);$arr2 = array(
1=>array(2,4,6,7,8),//应显示为7
2=>array(3,5,6,10,22)// 应显示为-
);$arr1 = array(
1=>explode('|', $arr[1]),
2=>explode('|', $arr[2]),
);
我的目的是$arr里面的元素按照数值从大到小进行排序,当有元素的序号($key)满足$arr2里面元素值的话,则显示出来匹配的最大的那个序号值,否则显示为空。我再举个例子吧:
$arr = array
(
'1' =>"0|0|0|1000|500|400|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
'2' =>"0|0|50|100|5000|0|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
'3' => "0|0|0|0|0|0|0|0|0|0|100|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0"
); $arr2 = array(
1=>array(2,4,6,7,8),//应显示为4,$arr最大值1000的那个键值为4,和数组$arr2中的值匹配。
2=>array(2,4,6,7,8),//应显示为7,虽然$arr最大值是5000,但是它的键值5不和数组$arr2中的值匹配,接下来找$arr第二大的值和$arr2中的值进行匹配,结果为7
3=>array(3,5,6,10,22)// 应显示为-,$arr依次从大到小进行匹配,但是没有键值和$arr2的值相匹配,所以显示为空(null)。
);
$arr = array
(
'1' =>"bin1|0|0|0|1000|500|400|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
'2' =>"bin2|0|0|50|100|5000|0|300|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
'3' => "bin3|0|0|0|0|0|0|0|0|0|0|100|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0"
);
$arr1 = array(
1=>explode('|',$arr[1]),
2=>explode('|',$arr[2]),
3=>explode('|',$arr[3])
);
echo '结果集一:<br>';
echo '<pre>';
print_r($arr1);
echo '</pre>';
$num = count($arr);
for ($i=1;$i<=$num;$i++)
{
$arr3[] = array(
$i=>explode('|',$arr[$i]),
);
}
for ($i=0;$i<count($arr3);$i++)
{
$new[]=$arr3[$i][$i+1];
}
$arr2 = array(
1=>array(2,4,6,7,8),
2=>array(3,5,6,10,22)
);
echo '结果集二:<br>';
echo '<pre>';
print_r($new);
echo '</pre>';
?>
以下同理,试试看吧。
建议从 $arr2 入手
$maxArray = array();
foreach ($v2 as $getMaxValue) {
$maxArray[$getMaxValue] = $arr[$k2][$getMaxValue - 1];
} $maxValue = max($maxArray); if (isset($maxValue) && $maxValue !== 0) {
echo array_search($maxValue, $maxArray);
}
}我在网吧写的,不知道对不对,LZ参考
$maxArray = array();
foreach ($v2 as $getMaxValue) {
$maxArray[$getMaxValue] = $arr[$k2][$getMaxValue - 1];
} $maxValue = max($maxArray); if (isset($maxValue) && $maxValue !== 0) {
echo array_search($maxValue, $maxArray);
}
else {
echo 'null';
}
}