有一次我在採訪中被問到一個問題。下面是這樣一個問題:
鍵在數組中相同的值
$arry= array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40" "5"=>"20");
有人問我找到它具有通過使用foreach循環的值相同的密鑰。
我仍然不知道這個問題的解決方案。任何幫助?
有一次我在採訪中被問到一個問題。下面是這樣一個問題:
鍵在數組中相同的值
$arry= array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40" "5"=>"20");
有人問我找到它具有通過使用foreach循環的值相同的密鑰。
我仍然不知道這個問題的解決方案。任何幫助?
$arry= array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40", "5"=>"20");
$results = array();
foreach($arry as $key=>$value) {
$results[$value][] = $key;
}
var_dump($results);
不會'$ results [$ value] []'發出通知('$ results [$ value]'永遠不會在您的代碼中聲明爲數組)。這就是爲什麼我將'array_fill_keys'調用添加到我的答案 –
不應該爲我發出任何通知,但完全錯誤日誌 –
@EliasVanOotegem它應該,但在這種情況下,我只是在該行前面加上一個'@'它被稱爲速記。 @Mark你可能沒有'error_reporting(-1)'激活。 –
<?php
$arry= array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40","5"=>"20");
$list = array();
foreach ($arry as $key => $value)
{
if (!isset($list[$value]))
{
$list[$value] = array();
}
$list[$value][] = $key;
}
var_export($list);
foreach ($arry as $key=>$value) {
if ($value == $findValue)
print $key.' ';
}
例$findValue
是20,則此代碼打印1 2 5
但可以是任意數量的值,我的意思是可以有許多鍵將具有相同的值..不僅20 ... –
可以請你告訴我有關變量$ findValue .. ??我必須聲明它爲空?或者其他的東西。 ? –
$arry= array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40", "5"=>"20");
$newArr = array();
foreach($arry as $key => $val) {
if(!array_key_exists($val, $newArr)) $newArr[$val] = "";
$newArr[$val] .= " - " . $key;
}
var_dump($newArr);
OUTPUT:VALUES => KEYS_WITH_SAME_VALUES
array (size=3)
20 => string ' - 1 - 2 - 5' (length=12)
30 => string ' - 3' (length=4)
40 => string ' - 4' (length=4)
或者,使用Mark Baker的答案(或我的):'foreach($ newArr as $ keys){implode(' - ',$ keys); }'。除了改進格式_1 - 2 - 5 _而不是_「 - 1 - 2 - 5」_...:P –
最簡單的方法:
<?php
$array = array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40" ,"5"=>"20");
print_r(array_count_values($array));
?>
用foreach:
<?php
$array = array("1"=>"20", "2"=>"20", "3"=>"30", "4"=>"40" ,"5"=>"20");
$result = array();
foreach($array as $value) {
$result[$value]++;
}
print_r($result);
?>
試試看here
由於面試問題去,那是關於基本,因爲它得到。你在哪裏堅持下去?你試過什麼了? – Spudley