我有一个页面查询结果如下:
Array
(
[0] => Array
(
[lang] => en
[id_page] => 113
[url] => pageurl_in_english
[title] => Page Name in English
)
[1] => Array
(
[lang] => fr
[id_page] => 113
[url] => pageurl_in_french
[title] => Page Name in French
)
)
我写了一个函数,在提交表单时将此数组恢复为原始状态。
原始状态是:
Array
(
[0] => Array
(
[url] => Array
(
[fr] => pageurl_in_french
[en] => pageurl_in_english
)
[title] => Array
(
[fr] => Page Name in French
[en] => Page Name in English
)
)
)
该函数应该将其还原;
function ml_back_to_form($data,$fields,$languages)
{
$result = array();
foreach ($fields as $field)
{
$i = 0;
foreach ($languages as $lang)
{
$result[$i][$field][$lang] = $data[$i][$field];
}
$i++;
}
return $result;
}
语言数组以fr,en(基于lang表中所需的lang顺序)的顺序排列,但是pages数组按顺序en,fr。函数将其还原为当前状态,但将全部写入英语值。我在这里犯了一个错误但是失明了所以看不到它。谢谢你的帮助。
如果该功能以错误的方式被虚构,则总是欢迎新的建议。
我编辑了然后功能到最后workinh副本。结果是:
Array
(
[0] => Array
(
[lang] => Array
(
[fr] => en
[en] => en
)
[url] => Array
(
[fr] => pageurl_in_english
[en] => pageurl_in_english
)
[title] => Array
(
[fr] => Page name in English
[en] => Page name in English
)
)
)
功能中提供的数组:
$data
是此问题中的第一个数组,来自db。
$fields
:
$fields = array(
'lang',
'url',
'title'
);
$languages
:
Array
(
[0] => fr
[1] => en
)
答案 0 :(得分:0)
希望这会有所帮助:
function ml_back_to_form($data,$fields,$languages)
{
$result = array();
foreach ($data as $item)
{
$i=0;
foreach ($fields as $field)
{
//Store the data from the field in an array
if (in_array($item['lang'], $languages))
$result[$i][$field][$item['lang']] = $item[$field];
}
$i++;
}
return $result;
}
注意:此功能要求$fields
数组中包含$data
的元素。