我有两个数组:
$array1 = array(1=>1,10=>1,12=>0,13=>13);
$array2 = array(1=>"Hello",10=>"Test",12=>"check",13=>"error");
这里$ array1有键和值。现在我想从$ array1中得到第一个值(为1),我想检查这个数组是否重复。
这里1重复两次,所以我想取两个键1,10并从$ array2显示这些键的相应值。如果$ array1中的值没有重复,那么我想只显示$ array2中该键的值。
我想得到如下输出:
Hello Test
check
error
这意味着在$ array1中,1,10个键具有相同的值,因此值$ 1和$ array2中的值10合并然后显示。
就像12有0这个没有重复,所以只需从$ array2中获取12的值。
喜欢13。
我该怎么做?
答案 0 :(得分:5)
<?php
$array1 = array(1=>1,10=>1,12=>0,13=>13);
$array2 = array(1=>"Hello",10=>"Test",12=>"check",13=>"error");
$groupedKeys = array();
foreach($array1 as $key=>$arr){
$groupedKeys[$arr][] = $key;
}
foreach($groupedKeys as $key => $groupedKeyArr){
foreach($groupedKeyArr as $groupedKey){
echo $array2[$groupedKey];
}
echo "<br /> ";
}
?>
答案 1 :(得分:2)
有一个内置函数返回一个数组,其中包含重复值的次数http://php.net/manual/en/function.array-count-values.php
答案 2 :(得分:1)
这真的很粗糙,但一个简单的方法可能是:
<?
$array1 = array(1=>1,10=>1,12=>0,13=>13);
$array2 = array(1=>"Hello",10=>"Test",12=>"check",13=>"error");
$prev = $array1[1];
foreach($array1 as $key => $val)
{
if($val != $prev && $key != 1)
{
echo '<br />';
}
echo $array2[$key].' ';
$prev = $val;
}
?>
示例:http://codepad.org/OpLdtStp
顺便说一下,假设你的第一把钥匙总是1
。
答案 3 :(得分:0)
我为您提供的函数返回一个数组,其中包含值在数组中重复的次数(作为值)和值作为键。进一步的任务并不困难。
function check_number_of_times_elements_occur_in_array($a)//returns values of array as keys, associating values being their total occurences in the array
{
$r=array();
foreach($a as $v)
++$r[$v];
return $r;
}
答案 4 :(得分:0)
我认为这会为你做..
function test($array1,$array2) {
$repeated_values = array_count_values($array1);
foreach($repeated_values as $key => $value){
if($value > 1) {
foreach($array1 as $key1 => $value1){
if($key == $value1){
$repeated_values_keys[] = $key1;
}
}
}
}
$str_top = "";
foreach($repeated_values_keys as $k){
$str_top .= $array2[$k]." ";
}
echo $str_top.'<br/>';
foreach($array2 as $key2 => $value){
if(!in_array($key2,$repeated_values_keys)){
echo $value.'<br/>';
}
}
}