Php 检查数组值是否存在,然后显示第二个值
我得到的数组如下:Php 检查数组值是否存在,然后显示第二个值,php,arrays,Php,Arrays,我得到的数组如下: Array ( [0] => url=website1.com/etcetcetc&itag=43&quality=medium&something=nill [1] => url=website2.com/etcetcetc&itag=18&quality=medium&something=nill [2] => url=website3.com/etcetcetc&itag=5&qualit
Array ( [0] => url=website1.com/etcetcetc&itag=43&quality=medium&something=nill
[1] => url=website2.com/etcetcetc&itag=18&quality=medium&something=nill
[2] => url=website3.com/etcetcetc&itag=5&quality=small&something=nill
[3] => url=website4.com/etcetcetc&itag=36&quality=small&something=nill
[4] => url=website5.com/etcetcetc&itag=17&quality=small&something=nill )
使用foreach($links as$link)
后,我得到如下数组:
Array ( [url] => website.com1/etcetcetc [itag] => 43 [quality] => medium [something] => nill )
Array ( [url] => website.com2/etcetcetc [itag] => 18 [quality] => medium [something] => nill )
Array ( [url] => website.com3/etcetcetc [itag] => 5 [quality] => small [something] => nill )
Array ( [url] => website.com4/etcetcetc [itag] => 36 [quality] => small [something] => nill )
Array ( [url] => website.com5/etcetcetc [itag] => 17 [quality] => small [something] => nill )
如何显示从中选择的链接
我想显示与itag的链接:43、18、36。它会检查其中一个URL是否可用。如果可用,则显示其URL。它可以是1、2或3个链接,这意味着如果带有itag
43和18的链接可用,那么它将显示2个URL,如果所有3个itag
链接都可用,那么它将显示这3个链接
url每次都不一样,所以我不能用php保存url,这意味着它必须从数组中获取url/链接
目前我展示的是:
echo '<a href="'.$r['url'].'">quality: '.$r['itag'].'</a>';
echo';
-------编辑------
下面是我想用的脚本/代码(它是由我的一个朋友制作的,但他现在几天都不在那里)
foreach($links作为$link){
回声“
”;
}
您可以遍历数组,如果数组中有您要查找的号码,则对其进行回显,如下所示:
$array = array(
array( 'url' => 'website.com1/etcetcetc', 'itag' => 43, 'quality' => 'medium', 'something' => 'nill' ),
array( 'url' => 'website.com2/etcetcetc', 'itag' => 18, 'quality' => 'medium', 'something' => 'nill' ),
array( 'url' => 'website.com3/etcetcetc', 'itag' => 5, 'quality' => 'small', 'something' => 'nill' ),
array( 'url' => 'website.com4/etcetcetc', 'itag' => 36, 'quality' => 'small', 'something' => 'nill' ),
array( 'url' => 'website.com5/etcetcetc', 'itag' => 17, 'quality' => 'small', 'something' => 'nill' )
);
$r = array();
function test($array, $number) {
foreach($array as $r)
if ($r['itag'] == $number) {
echo '<a href="'.$r['url'].'">quality: '.$r['itag'].'</a>';
}
}
test($array, 43);
test($array, 18);
test($array, 36);
或者,如果您想使用数组作为输入,因此不必对每个数字都进行输入,只需将其包装在另一个foreach
循环中,在新的$numbers
数组的元素之间循环,如下所示:
$number = 22;
foreach($links as $link) {
parse_str($link,$r);
if ($r['itag'] == $number)
echo '<a href="'.$r['url'].'">quality: '.$r['itag'].'</a><br />';
}
$numbers = array(17, 22, 36);
foreach($numbers as $number) {
foreach($links as $link) {
parse_str($link,$r);
if ($r['itag'] == $number)
echo '<a href="'.$r['url'].'">quality: '.$r['itag'].'</a><br />';
}
}
$numbers=数组(17,22,36);
foreach($number作为$number){
foreach($links作为$link){
parse_str($link,$r);
如果($r['itag']==$number)
回声“
”;
}
}
$array=array(
数组('url'=>'website.com1/etcetc','itag'=>43','quality'=>'medium','something'=>'nill'),
数组('url'=>'website.com2/etcetc','itag'=>18','quality'=>'medium','something'=>'nill'),
数组('url'=>'website.com3/etcetc','itag'=>5','quality'=>'small','something'=>'nill'),
数组('url'=>'website.com4/etcetc','itag'=>36','quality'=>'small','something'=>'nill'),
数组('url'=>'website.com5/etcetc','itag'=>17,'quality'=>'small','something'=>'nill');
$no='43';//你想要什么都行
foreach($os作为$r)
{
if(在_数组中($r['itag']==no,$os)){
回声';
}
}
在foreach
循环之后使用if语句将解决您的问题
foreach($links as $link){ //foreach loop as you said
if($link['itag'] == '43' || $link['itag'] == '18' || $link['itag'] == '36'){ //check if the itag is 43 or 18 or 36
//your echo here
}
}
你可以使用。伙计,你的编辑极大地改变了整个问题!!!webeno但是我需要帮助,这样你就可以每次改变数组。所以我添加了显示数组的字符串$数组=数组($r);但它不起作用(我没有改变任何其他内容)我的php给出的数组是这样的:数组([url]=>website.com5/etcetc[itag]=>17[quality]=>[type]=>video;codecs=“avc1.64001F,mp4a.40.2”[url][something]=>nill),但你的脚本使用的是这种数组,数组('url'=>'website.com5/etcetc','itag'=>17,'quality'=>'small','something'=>'nill')我的一个不工作,我试过了。在你的代码中,如果我做这个打印($array);我得到的数组就像这个数组([0]=>array([url]=>[itag]=>43[quality]=>medium[质量]=>medium[某种东西]=>nill[1]=>Array([url]=>[itag]=>18[quality]=>medium[something]=>nill)[2]=>Array([url]=>[itag]=>5[quality]=>small[something]=>nill]),但在我的生活中,我得到的是这样的:Array([0]=>数组([quality]=>hd720[itag]=>22[url]=>)数组([0]=>Array([quality]=>medium[itag]=>43[url]=>)数组([0]=>Array([quality]=>medium[itag]=>18[url]=>))因此,你的数组与1、2、3、4排列在一起,但在我的数组中,我认为这就是问题所在。老实说,我不知道你是如何得到这个数组的,对我来说,它看起来像是循环通过一个数组,然后每次都使用print\r
,因为它看起来就像是一系列相邻的数组……如果你原来的数组真的是打开的话e在你的问题之上,按照你指定的方式进行foreach循环,你根本不可能得到你提到的其他数组,所以请确保你共享完整的代码,否则整个事情将毫无意义!单击“edited X xxx ago”查看我所做的编辑,这样你就可以学习如何正确格式化你的答案(或问题) ;)
$array = array(
array( 'url' => 'website.com1/etcetcetc', 'itag' => 43, 'quality' => 'medium', 'something' => 'nill' ),
array( 'url' => 'website.com2/etcetcetc', 'itag' => 18, 'quality' => 'medium', 'something' => 'nill' ),
array( 'url' => 'website.com3/etcetcetc', 'itag' => 5, 'quality' => 'small', 'something' => 'nill' ),
array( 'url' => 'website.com4/etcetcetc', 'itag' => 36, 'quality' => 'small', 'something' => 'nill' ),
array( 'url' => 'website.com5/etcetcetc', 'itag' => 17, 'quality' => 'small', 'something' => 'nill' ) );
$no = '43';// whatever u want
foreach($os as $r)
{
if (in_array(($r['itag'] == $no), $os)) {
echo '<a href="'.$r['url'].'">quality: '.$r['itag'].'</a>';
}
}
foreach($links as $link){ //foreach loop as you said
if($link['itag'] == '43' || $link['itag'] == '18' || $link['itag'] == '36'){ //check if the itag is 43 or 18 or 36
//your echo here
}
}