我试图使用foreach输出下面的数组。我已经通过array_push()创建了这个数组,基于preg_match if / else。
Array (
[0] => Array (
[date] =>
[clickurl] => some data
[url] => some data
[dispurl] => some Data...
[title] => Transformers: Revenge of the Fallen : Reviews
[abstract] => "Transformers: Revenge of the Fallen" is a horrible experience of unbearable length, briefly punctuated by three or four amusing moments.
)
[1] => Array (
[date] =>
[clickurl] => some data
[url] => some data
[dispurl] => some Data...
[title] => Transformers : Reviews
[abstract] => After a string of bad-to-mediocre films, director Michael Bay scores with blockbuster battling robots in "Transformers."
)
)
尝试输出数组时:
foreach ($reviewArr as $review) {
echo($review['clickurl']. '<br/><br/>');
}
输出为“A”,它是上面数组开头的Array的第一个字母。这与使用$review[0];
使用时:
foreach ($reviewArr as $review) {
echo($review. '<br/><br/>');
}
输出是:
Array (
[date] =>
[clickurl] => some data
[url] => some data
[dispurl] => some data...
[title] => Transformers : Reviews
[abstract] => After a string of bad-to-mediocre films, director Michael Bay scores with blockbuster battling robots in "Transformers."
)
我不确定为什么会这样。任何帮助将不胜感激。
谢谢!
UPDATE =
这是我在下面解析的原始数组,分成两个不同的数组。
Array
(
[bossresponse] => Array
(
[responsecode] => 200
[web] => Array
(
[start] => 0
[count] => 14
[totalresults] => 14
[results] => Array
(
[0] => Array
(
[date] =>
[clickurl] => http://url.com/1
[url] => http://url.com/1
[dispurl] => http://url.com/1...
[title] => Title of Content 1
[abstract] => This is the summary, This is the summary, This is the summary, ...
)
[1] => Array
(
[date] =>
[clickurl] => http://url.com/2
[url] => http://url.com/2
[dispurl] => http://url.com/2...
[title] => Title of Content 2
[abstract] => This is the summary, This is the summary, This is the summary, ...
)
)
)
)
)
这就是我设置$ reviewArr []的方式。
foreach ($results['bossresponse']['web']['results'] as $key => $result) {
$url = $result['clickurl'];
$title = $result['title'];
$abstract = $result['abstract'];
$resultItem = print_r($results['bossresponse']['web']['results'][$key], true);
if (preg_match ("/reviews/i", "$url")) {
array_push($reviewArr, "$resultItem");
} else {
array_push($resultsArr, "$resultItem");
}
}
更新#2 -
我感谢@fabio,我只是设置一个上面有$resultItem
的字符串。如何创建多维数组?我如何将其构建为数组 - 我的所有尝试都返回错误或字符串。
Array
(
[0] => Array
(
[date] =>
[clickurl] => http://url.com/1
[url] => http://url.com/1
[dispurl] => http://url.com/1...
[title] => Title of Content 1
[abstract] => This is the summary, This is the summary, This is the summary, ...
)
[1] => Array
(
[date] =>
[clickurl] => http://url.com/2
[url] => http://url.com/2
[dispurl] => http://url.com/2...
[title] => Title of Content 2
[abstract] => This is the summary, This is the summary, This is the summary, ...
)
)
答案 0 :(得分:0)
我不知道你是如何在阵列上推送物品的,但我认为这可以解决问题:
foreach ($reviewArr as $index=>$review) {
echo($review['clickurl']. '<br/><br/>');
}
答案 1 :(得分:0)
变化:
foreach ($results['bossresponse']['web']['results'] as $key => $result) {
$url = $result['clickurl'];
$title = $result['title'];
$abstract = $result['abstract'];
$resultItem = print_r($results['bossresponse']['web']['results'][$key], true);
if (preg_match ("/reviews/i", "$url")) {
array_push($reviewArr, "$resultItem");
} else {
array_push($resultsArr, "$resultItem");
}
}
为:
foreach ($results['bossresponse']['web']['results'] as $key => $result) {
if (preg_match ("/reviews/i", $result['clickurl'])) {
$reviewArr[] = $result;
} else {
$resultsArr[] = $result;
}
}
答案 2 :(得分:0)
出于奇怪的原因,您使用print_r ???
的返回值填充数组// this will return a string
$resultItem = print_r($results['bossresponse']['web']['results'][$key], true);
所以这就是你行为的原因:你打印的是print_r返回值的第一个字符,它是$results[...][...]
数组的字符串表示形式。
自己尝试
$foo = "Hello world";
echo $foo[0]; // output H
P.S。 echo($review. '<br/><br/>');
将输出整个字符串,即print_r输出。