[英]How to split multidimensional array into simple arrays
我有一個這樣的多維數組 ,它是用戶做出的選擇的列表。 這只是從用戶檢索到的數據的示例。 子陣列的組合可能會根據用戶選擇而有所不同。 類似3個子數組,分別具有元素3、5、2。 並且數組鍵也將需要來自...
array(7) {
["resume_residence"]=>
string(8) "Barbados"
["resume_language_fluently"]=>
string(8) "Mandarin"
["resume_language_professional"]=>
string(7) "Spanish"
["resume_language_basic"]=>
string(8) "Mandarin"
["resume_overseas_experience"]=>
string(2) "No"
["resume_degree"]=> array(2) {
[0]=> string(2) "BA"
[1]=> string(3) "BFA"
}
["resume_career_employment_status"]=> array(2) {
[0]=> string(8) "Employed"
[0]=> string(10) "Unemployed"
}
}
我想將此數組轉換為多個數組 ,每個數組都具有單個值鍵,例如
array(4){
array(7) {
["resume_residence"]=> string(8) "Barbados"
["resume_language_fluently"]=> string(8) "Mandarin"
["resume_language_professional"]=> string(7) "Spanish"
["resume_language_basic"]=> string(8) "Mandarin"
["resume_overseas_experience"]=> string(2) "No"
["resume_degree"]=> string(2) "BA"
["resume_career_employment_status"]=> string(2) "Employed"
},
array(7) {
["resume_residence"]=> string(8) "Barbados"
["resume_language_fluently"]=> string(8) "Mandarin"
["resume_language_professional"]=> string(7) "Spanish"
["resume_language_basic"]=> string(8) "Mandarin"
["resume_overseas_experience"]=> string(2) "No"
["resume_degree"]=> string(2) "BA"
["resume_career_employment_status"]=> string(2) "Unemployed"
},
array(7) {
["resume_residence"]=> string(8) "Barbados"
["resume_language_fluently"]=> string(8) "Mandarin"
["resume_language_professional"]=> string(7) "Spanish"
["resume_language_basic"]=> string(8) "Mandarin"
["resume_overseas_experience"]=> string(2) "No"
["resume_degree"]=> string(2) "BFA"
["resume_career_employment_status"]=> string(2) "Employed"
},
array(7) {
["resume_residence"]=> string(8) "Barbados"
["resume_language_fluently"]=> string(8) "Mandarin"
["resume_language_professional"]=> string(7) "Spanish"
["resume_language_basic"]=> string(8) "Mandarin"
["resume_overseas_experience"]=> string(2) "No"
["resume_degree"]=> string(2) "BFA"
["resume_career_employment_status"]=> string(2) "Unemployed"
}
}
請幫助我如何將數組拆分為多個數組,如上面的一個..
您似乎想生成分配給輸入中不同鍵的數組值的所有可能組合。
您可以通過遞歸來做到這一點:
$array = [
"resume_residence"=> "Barbados",
"resume_language_fluently"=> "Mandarin",
"resume_language_professional"=> "Spanish",
"resume_language_basic"=> "Mandarin",
"resume_overseas_experience"=> "No",
"resume_degree"=> ["BA", "FBA"],
"resume_career_employment_status"=> ["Employed", "Unemployed"]
];
function expandArrays(&$array) { // Argument by reference
// Get current key and value based on the array pointer
$key = key($array);
$value = current($array);
// Get results for any further key/values through recursion:
$results = next($array) ? expandArrays($array) : [$array];
// Nothing changes if the current value is not an array
if (!is_array($value)) return $results;
// It is an array, so produce all combinations of the partial results with each value
foreach($value as $v) {
foreach($results as $r) {
$r[$key] = $v;
$newResults[] = $r;
}
}
// ... and return that as a result
return $newResults;
}
$results = expandArrays($array);
print_r($results);
輸出:
Array (
[0] => Array (
[resume_residence] => Barbados
[resume_language_fluently] => Mandarin
[resume_language_professional] => Spanish
[resume_language_basic] => Mandarin
[resume_overseas_experience] => No
[resume_degree] => BA
[resume_career_employment_status] => Employed
)
[1] => Array (
[resume_residence] => Barbados
[resume_language_fluently] => Mandarin
[resume_language_professional] => Spanish
[resume_language_basic] => Mandarin
[resume_overseas_experience] => No
[resume_degree] => BA
[resume_career_employment_status] => Unemployed
)
[2] => Array (
[resume_residence] => Barbados
[resume_language_fluently] => Mandarin
[resume_language_professional] => Spanish
[resume_language_basic] => Mandarin
[resume_overseas_experience] => No
[resume_degree] => FBA
[resume_career_employment_status] => Employed
)
[3] => Array (
[resume_residence] => Barbados
[resume_language_fluently] => Mandarin
[resume_language_professional] => Spanish
[resume_language_basic] => Mandarin
[resume_overseas_experience] => No
[resume_degree] => FBA
[resume_career_employment_status] => Unemployed
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.