0

この方法で動的リンクを作成しようとしています:

  • 配列を取る
  • 1 つの要素のキーを検索する
  • この要素を削除
  • 配列要素を文字列に分解する
  • リンクに文字列をパラメーターとして表示する

私は次のようにしています:

 $url_langs=array('fra','cat','hun'...); //CURRENT LANGS in use

 $all_langs=array('eng','fra','por','ser','cat','dan','hun','fin','est','esl',...);

 foreach($all_langs as $lang){
    echo (in_array($lang,$url_langs))?'<a href="' . implode('|',unset($url_langs[array_search($lang,$url_langs)])) . '">' . $lang . '</b> ':'<a href="' . implode('|',$url_langs) . '|' . $lang . '">' . $lang . '</a> ';
 }

まあ、ご覧のとおりです。使用可能なすべての言語を含む配列を繰り返し処理し、それが既に使用されているかどうかを確認します。使用中の場合は、使用しないようにリンクを表示します。逆の場合も同様です。

PHPマニュアル(未設定)にあるように、「値が返されません。」. そのため、その場で unset を使用することはできません。私の質問は次のとおりです。

  1. それを達成するための代替形式はありますか?
  2. 長いif文を使用して、implode() 関数に使用する新しい配列を定義できます。でも、変ですよね?私の目標がプレーンテキストにすることである場合、新しい配列を作成しますか?
  3. str_replace を使用して、内破した文字列のこの部分を削除できます...しかし、これはその場で行うこともできません。

どうもありがとう。

4

2 に答える 2

0

あなたの場合、 array_diffを使用します:

$new_langs = array_diff($all_langs, $url_langs);
print_r($new_langs);
// this will print
// Array([0] => eng [2] => por [3] => ser [5] => dan [7] => fin [8] => est [9] => esl)
于 2013-04-28T11:10:18.820 に答える