我有一个包含这样的值的数组
请参阅下面的脚本示例
假设这是一个变量$ Output_Data
我想在下面列出的$ Output_Data上应用某些功能
如果存在img,则将其添加到添加img标记示例
的变量中if exist img key in output data (or flv or mp4)
$output_img[] = '<a href="$Output_Data[img]">Image "$i"</a>';
对于每一把钥匙都是这样的,我的意思是FLV,MP4,IMG
输出到用户界面现在我们再次创建了新的数据分隔数据
$output_img[]
$output_flv[]
$output_mp4[]
因此,如果数组包含数据而不是输出到用户屏幕...(这里也检查它们是否存在或是空的)
我不是这方面的专业人士我只是想在我的网站上添加一个功能而且我很讨厌数组,但它是唯一可以帮助我的东西。
你也可以为此提一个替代解决方案...因为这只是我的想法而不是必要性。
对不起,这里的错误代码是一个示例脚本
function sortoutput($data_to_sort,$key_explode_char) {
$output_content = array();
foreach (explode(PHP_EOL, $data_to_sort) as $cLine) {
list ($cKey, $cValue) = explode($key_explode_char, $cLine, 2);
$output_content[$cKey] = $cValue;
}
return $output_content;
}
ob_start();
$flv = 'http://example.com/example.flv';
$flv2 = 'http://example.com/example2.flv';
$img = 'http://example.com/my.jpg';
$mp4 = 'http://example.com/okay.mp4';
print 'flv=`'.$flv.PHP_EOL;
print 'flv=`'.$flv2.PHP_EOL;
print 'img=`'.$img.PHP_EOL;
print 'mp4=`'.$mp4;
$Output_Download_Link = ob_get_contents();
ob_end_clean();
echo $Output_Download_Link;
$Sorted_Output_Links = sortoutput($Output_Download_Link, '=`');
echo '<pre>';
print_r($Sorted_Output_Links);
echo '</pre>';
答案 0 :(得分:1)
您必须切换键和值。钥匙永远是独一无二的!您不能拥有两个或多个具有相同键名的条目(使用二维数组除外......)。
在此之后,您可以使用array_keys()获取数组的键并使用array_unique()
$array = array('url1' => 'flv', 'url2' => 'flv', 'url3' => 'png');
$keys = array_keys($array); //all urls
$keys = array_unique($keys); //remove url duplicates
$output = array( //all extensions which should be stored in array
'flv' => array(),
'png' => array(),
'mp4' => array(),
);
foreach($keys as $url) {
$extension = $array[$url];
if(isset($output[$extension])) {
$id = count($output[$extension]) + 1;
$output[$extension][] = "<a href=\"".$url."\">Image #".$id."</a>";
}
}
foreach($output as $o) {
//Output all arrays which aren't empty
if(!empty($o)) {
$o = implode('', $o);
echo $o.'<hr />';
}
}
更好的方法是使用substr()和strrpos()直接从链接获得扩展名。
你可以检查$ output [$ extension]是否存在并在$ output [$ extension]上创建一个空数组()。通过这种方式,您可以更灵活地使用扩展程序......
修改:添加了正确的示例...
你必须改变这一行:$ output_content [$ cKey] = $ cValue;
//OLD: $output_content[$cKey] = $cValue;
//NEW:
if(!isset($output_content[$cKey])) {
$output_content[$cKey] = array();
}
$output_content[$cKey][] = "<a href=\"".$cValue."\">".$cValue."</a>";
然后你可以检查$ output_content的每个条目是否为空并输出它。 (看看我上面的第一个例子)