我正在尝试以这种方式创建动态链接:
我这样做如下:
$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 manual (unset)所说:“没有返回任何值。”。所以我不能在飞行中使用unset。我的问题是:
if
句子,并定义一个新数组,然后我将用于implode()函数。但是,这不奇怪吗?如果我的目标是以纯文本形式创建一个新数组?非常感谢。
答案 0 :(得分:1)
array_diff(a1,a2)将返回a1值不在a2中的数组。 因此,将$ lang转换为数组值($ lang)并获取数组差异将为您提供所需的值
您在第一个</a>
<a href=
$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('|',array_diff($url_langs, array($lang)))
. '">' . $lang . '</a></b> ' :
'<a href="'
. implode('|',$url_langs) . '|' . $lang . '">' . $lang . '</a> ';
}
答案 1 :(得分: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)