我不明白为什么foreach
只返回数组中的第一个值。
function __EachReturn($Array){
foreach($Array as $Key=>$Arr){
$List = $Arr;
}
return $List;
}
这是我的完整功能:
// Styled Function
function Returnstyled($Style){
$Styled = array();
function __EachReturn($Array){
foreach($Array as $Key=>$Arr){
$List = $Arr;
}
return $List;
}
foreach($Style as $Key=>$Items){
$Items = __EachReturn($Items);
switch($Key){
case 'CSS':
$Styled[] = sprintf('<link rel="%s" href="%s" type="%s">',$Items['rel'],$Items['href'],$Items['type']);
break;
case 'JS':
$Styled[] = sprintf('<script src="%s" integrity="%s" crossorigin="%s"></script>',$Items['src'],$Items['integrity'],$Items['crossorigin']);
break;
}
}
return $Styled;
}
在我使用之前:
function Returnstyled($Style){
$Styled = array();
foreach($Style as $Key=>$Items){
switch($Key){
case 'CSS':
foreach($Items as $Item){
$Styled[] = sprintf('<link rel="%s" href="%s" type="%s">',$Item['rel'],$Item['href'],$Item['type']);
}
break;
case 'JS':
foreach($Items as $Item){
$Styled[] = sprintf('<script src="%s" integrity="%s" crossorigin="%s"></script>',$Item['src'],$Item['integrity'],$Item['crossorigin']);
}
break;
}
}
return $Styled;
}
所以我做了什么。我不想在foreach
内使用switch case couple of time
,这就是为什么我尝试生成嵌套函数,我在其中创建了一个函数EeachReturn
,但它只返回首先来自阵列。
必须返回完整数组。
答案 0 :(得分:4)
将其存储在array
中并在结尾处返回数组:
function __EachReturn($Array){
$List=array();
foreach($Array as $Key=>$Arr){
$List[] = $Arr;//change is made here use array to store all values
}
return $List;//return the array.
}
更新:看到
在我使用之前
部分来自您的问题,我建议使用您的函数__EachReturn
,如下所示:
function __EachReturn($Key,$Array){
$Styled=array();
foreach($Array as $key=>$Items){
switch($Key){
case 'CSS':
$Styled[] = sprintf('<link rel="%s" href="%s" type="%s">',$Items['rel'],$Items['href'],$Items['type']);
break;
case 'JS':
$Styled[] = sprintf('<script src="%s" integrity="%s" crossorigin="%s"></script>',$Items['src'],$Items['integrity'],$Items['crossorigin']);
break;
}
}
return $Styled;
}
$ItemsList=array();
foreach($Style as $Key=>$Items){
$ItemsList[] = __EachReturn($Key,$Items);//$ItemsList will consist all the script/link ....
}
答案 1 :(得分:1)
它不是从数组返回第一个值,而是返回最后一个值。
function __EachReturn($Array){
foreach($Array as $Key=>$Arr){
$List = $Arr; //here $List is always getting overwritten by $Arr
}
return $List; //when loop finishes, final $Arr is in $List and it is returned
}
为了返回所有值,请在@Suchit建议的数组中存储。
答案 2 :(得分:1)
试试这个,
function __EachReturn($Array){
$List = [];
foreach($Array as $Key=>$Arr){
$List[] = $Arr; // your loop record was replacing in every loop. now will be captured in array.
}
return $List;
}
您需要捕获数组中的foreach数据。