と元の状態に転置配列を元に戻す:は、私は以下のようにページのクエリ結果を持っている言語変数
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;
}
言語アレイは、EN(langのテーブルの所望のlangの順序に基づいて)、FRとのために来たが、ページの配列はFR、ENために来ます。機能は現在の状態に戻しますが、すべて英語の値に書き換えます。私はここで間違いをしていますが、それは見えないので盲目です。助けてくれてありがとう。
機能が誤った形でフィクションされている場合、新しいアドバイスは常に歓迎されます。
編集して、最後に作業コピーを編集しました。結果は次のとおりです。機能で提供
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
)
ほんの少しの点ですが、2番目のループのif文が、比較演算子(==など)ではなく代入演算子(=)を使用しています。私はこれがあなたの問題の原因であるかどうかは分かりません。 –
'=='で置き換えようとしましたが、空の配列で未定義のインデックスエラーが発生しました。私はそれが問題ではないと思う。 –
文を削除したままにしておくこと。上記は最初の作業コピーですが、間違った結果があります。結果も追加されます。 –