我正在使用库PHP Simple HTML DOM Parser并且我的数组正在运行A-OK,现在在解析的一些URL中元素根本不存在(这是正常的)但我想创建一个条件将使用诸如“未找到”之类的字符串替换空数组值。
我怎样才能做到这一点?
以下是代码:
$memb1 = 'http://www.xyz1.org';
$memb2 = 'http://www.abc3.org';
$memb(n) = '...etc...etc'
$teams = array(
array("url" => $memb1, "selector" => ".product-list >
table:nth-child(1) >
tbody:nth-child(1) >
tr:nth-child(2) >
td:nth-child(2) > a"),
array("url" => $memb2, "selector" => ".product-list >
table:nth-child(1) >
tbody:nth-child(1) >
tr:nth-child(2) >
td:nth-child(2) > a"),
array("url" => $memb(n), "selector" => ".product-list >
table:nth-child(1) >
tbody:nth-child(1) >
tr:nth-child(2) >
td:nth-child(2) > a"),...etc...etc
我的Foreach循环如下所示:
foreach($teams as $site) {
$url = $site["url"];
$html = file_get_html($url);
foreach ($html->find($site["selector"]) as $a) {
$links[] = $a->href; break;
}
}
?>
<pre>
<?php print_r($links);?>
</pre>
所以我会重申澄清一下; foreach
循环将href
中找到的'selector'
链接的值推入索引。当找不到元素时它只是跳到下一个索引,我想创建一个条件来检查该元素是否存在,如果不存在:将索引值推入字符串。
所以让我们说索引2,4和5 href不存在,预期结果应如下所示:
Array
(
[0] => http://www.abcd.com/etc/etc
[1] => http://www.gfege.com/etc/etc
[2] => Not Found
[3] => http://www.asdad.com/etc/etc
[4] => Not Found
[5] => Not Found
)
我不知道在哪里放置这个条件以及适合foreach
的正确语法。
答案 0 :(得分:0)
如果我理解你想要的东西:
$links[] = ($a->href != "") ? $a->href : "Not Found";
答案 1 :(得分:0)
尝试检查
的if语句$a->href
是空的。所以代码看起来像这样:
if (empty($a->href)) {
links[] = "Not Found";
} else {
links[] = $a->href;
}
答案 2 :(得分:0)
看起来这里有点混乱,所以我要写出我想解释的所有可能的东西,我要从你的一句话中删除
我想创建一个条件来检查该元素是否存在,如果不存在:将索引值推入字符串。
如果要查看是否存在特定的数组键,请使用此
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
}
您可以将字符串'first'
更改为循环中的任何字符串变量。如果你想看看数组键是否具有&#34; truthy&#34;价值,使用此:
isset($array['foo'])
同样,您可以用变量替换'foo'
。
如果要查看数组中存在特定值,请使用此
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
如果要检查字符串值,最好事先修剪字符串。我过去曾遇到过将变量设置为像$var = " "
这样奇怪的问题的问题,并且它的行为就像是一个有长度的真正字符串。我喜欢做这样的事情
if( strlen( trim($text) ) > 0) { ... }
如果您想要这些条件中的任何一个,只需将该索引值设置为您想要的字符串。
这几乎总结了我。对不起,我不太了解你的问题,从外表来看,还有其他人也有同感。祝你好运。
答案 3 :(得分:0)
这就是你需要的:
TableA.append(newTable)
但请记住,如果您的选择器返回多个# Table A
0 1 2
0 2 3 4
1 5 6 7
2 8 9 10
# Table B
0 1 2
0 1 3 4
1 5 7 8
2 9 10 0
# Set 'Key' column = 1
# Run the script after the loop
# Table A
0 1 2
0 2 3 4
1 5 6 7
2 8 9 10
3 5 7 8
4 9 10 0
# Table B
0 1 2
1 5 7 8
2 9 10 0
标记,那么您的最终数组将不会如您所愿。