我有兩個陣列。一個是顏色串列,第二個是鍵值對的關聯陣列。我的目標是從關聯陣列中獲取鍵值對,并使它們成為顏色陣列中每個專案的子陣列。搜索 SO 給我帶來了各種相鄰的問題,但不是我特別遇到的問題。這里有兩個示例陣列,然后$final就是我想要實作的:
$colors = ['#eea845', '#64A0B4', '#003c50', '#FF5568', '#eee', '#5cb85c', '#5bc0de', '#f0ad4e', '#d9534f'];
$test = [
'key1' => 'val1',
'key2' => 'val2',
'key3' => 'val3',
'key4' => 'val4',
'key5' => 'val5',
'key6' => 'val6',
'key7' => 'val7',
'key8' => 'val8',
'key9' => 'val9',
];
$final = [
'#eea845' => [
'name' => 'key1',
'value' => 'val1',
],
'#64A0B4' => [
'name' => 'key2',
'value' => 'val2',
],
etc.....
]
我一直在研究array_walk、array_map,并試圖弄清楚如何組合for和foreach回圈。我查看了此處給出的答案(將一個陣列值作為鍵值對附加到另一個陣列 php),但我不確定如何在現有陣列上使用它并能夠獲取每個陣列的索引。例如,該解決方案使用array_walk($array1, function(&$v, $k) use($array2) { $v['date'] = $array2[$k]; });但我需要將 $array2 中的值添加到 $array1 中已經存在的專案中,雖然我嘗試function($i, $v, $k)使用$i作為 $array1 中的索引,但這不起作用,$i 是不明確的。
我很難過,不知道下一步該往哪里看。你會如何
return $colors[$i] =>
[
'name' => $test[$key],
'value' => $test[$name]
]
?
(對于背景關系,我使用它來獲取輸入到 Twig 模板的值,這看起來是解決那一半問題的最佳方法。但如果這方面太難了......)
uj5u.com熱心網友回復:
我只是結合foreach()使用以下邏輯:
- 檢查兩個陣列是否具有相同的長度。
- 使用
foreach通過最終陣列的陣列和填充走路。 - 我在這一點上并不擅長,但我使用 a
$count來跟蹤索引。您可以使用游標像next($colors)和current($colors),但我不知道。
<?php
$colors = [
'#eea845', '#64A0B4', '#003c50', '#FF5568', '#eee', '#5cb85c', '#5bc0de', '#f0ad4e', '#d9534f'
];
$test = [
'key1' => 'val1',
'key2' => 'val2',
'key3' => 'val3',
'key4' => 'val4',
'key5' => 'val5',
'key6' => 'val6',
'key7' => 'val7',
'key8' => 'val8',
'key9' => 'val9',
];
if (count($colors) == count($test)) {
$count = 0;
$finalOne = array();
foreach ($test as $key => $value) {
$finalOne[$colors[$count]] = [
"name" => $key,
"value" => $value
];
$count ;
}
print_r($finalOne);
} else {
echo "Arrays are of not same length.";
}
輸出
Array
(
[#eea845] => Array
(
[name] => key1
[value] => val1
)
[#64A0B4] => Array
(
[name] => key2
[value] => val2
)
[#003c50] => Array
(
[name] => key3
[value] => val3
)
[#FF5568] => Array
(
[name] => key4
[value] => val4
)
[#eee] => Array
(
[name] => key5
[value] => val5
)
[#5cb85c] => Array
(
[name] => key6
[value] => val6
)
[#5bc0de] => Array
(
[name] => key7
[value] => val7
)
[#f0ad4e] => Array
(
[name] => key8
[value] => val8
)
[#d9534f] => Array
(
[name] => key9
[value] => val9
)
)
作業演示:http : //sandbox.onlinephpfunctions.com/code/73fb63fab8ccbdb6f73c795572ae51a0d98acdb4
uj5u.com熱心網友回復:
有幾種方法可以做到。一種方法是foreach在關聯陣列上使用,因此您可以在單獨的變數中獲取鍵和值,并使用next()從第一個(索引)陣列中獲取相應的值:
foreach ($test as $key => $value) {
$final[current($colors)] = ["name" => $key, "value" => $value];
next($colors);
}
在你已經使用了罕見的事件next()上$colors,你必須呼叫reset($colors)啟動該回圈之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355581.html
上一篇:c洗掉空格功能在遇到空格時停止
下一篇:針對null[]的型別保護
