我有一段类似于下面的代码:
$list_links = array(
[0] => Array // Here I get this error message Parse error: syntax error, unexpected '[', expecting ')'
(
"http://test.com/1/",
"http://test.com/2/"
),
[1] => Array
(
"http://test.com/3/",
"http://test.com/4/"
)
);
//Code stops to execute here
foreach($list_links as $link) {
DoWork($link, $db_connect);
if ($list_links[0]) {
echo "this URL is from the 0 list";
} else if ($list_links[1]) {
echo "this URL is from the 1 list";
}
}
//DoWork function works well and is already tested
function DoWork($link, $db_connect){
...
...
...
}
问题是代码在到达DoWork()
循环时停止执行foreach()
函数,因为它无法从列表中获取每个URL。
以下是我的问题:
你能看看foreach($list_links as $link)
语法是否正确吗?
2. if
和if ($list_links[0])
的{{1}}格式是否正确以回复消息?
答案 0 :(得分:2)
我不建议在这样的循环中进行数据库调用,但要回答你的问题:
将variable
分配给功能结果
$list_links = DoWork($link, $db_connect);
if ($list_links[0]) {
echo "this URL is from the 0 list";
} else if ($list_links[2]) {
echo "this URL is from the 1 list";
}
语法错误
$list_links = array(
[0] => Array
(
"http://test.com/1/",
"http://test.com/2/", <---- remove this ,
),
[1] => Array
(
"http://test.com/3/",
"http://test.com/4/", <---- remove this ,
)
);
答案 1 :(得分:2)
在此上下文中,foreach($list_links as $link)
,$link
不是网址,而是网址数组。尝试使用嵌套的foreach:
foreach ($list_link as $link_array) {
foreach ($link_array as $link) {
DoWork($link, $db_connect);
}
}
这将解决问题的第一部分。但是,我不确定您使用if($list_links[0]) ...
尝试完成的操作。这只会检查$list_links[0]
是真还是假。此外,无论您尝试做什么,它都不会像错误检查一样,因为,根据您的数据,每个网址将始终分开$list_link[0]
或{{ 1}}。如果您只想说明每个URL来自哪个列表,请尝试以下操作:
$list_link[1]
关于foreach ($list_link as $key=>$link_array) {
foreach ($link_array as $link) {
DoWork($link, $db_connect);
echo 'this url is from the '.$key.' list';
}
}
:
从键中删除括号。声明数组时,不使用它们。
Parse error: syntax error, unexpected '[', expecting ')'
请注意,如果数组元素的键是字符串,则必须将其包装在引号中:
$list_links = array(
0 => array
(
"http://test.com/1/",
"http://test.com/2/"
),
1 => array
(
"http://test.com/3/",
"http://test.com/4/"
)
);
进一步注意,数组的默认键是从0开始的整数,因此在您的情况下,您可以简单地删除键以获得相同的结果:
$array = array ('key' => 'value')
这将自动为这两个元素分配键0和1,而无需显式声明。 See a demo
答案 2 :(得分:2)
只是猜测并试图成为有帮助的人。不要投票给我。 这可能吗?
foreach($list_links as $link) {
DoWork($link, $db_connect);
if (in_array($links, $link_list[0])) {
echo "this URL is from the 0 list";
} elseif (in_array($links, $link_list[1])) {
echo "this URL is from the 1 list";
}
}
请注意,我使用in_array()的递归功能来检查$ links数组是否包含'zero'数组$link_list[0]
或'one'数组$link_list[1]
中的值。< / p>