2012-03-04 60 views
0

我有一个使用curl来获取json提要内容的php脚本。一切工作正常,直到我尝试返回json提要中的“q”值。下面的代码只返回“null”。我怎样才能解决这个问题?我怀疑它与行$search_term = $term[$number]->q;有关,但我不是100%确定的。数组总是返回null如何停止这个

$lmgtfy_json_feed = get_data('http://live.com/'); 
$lmgtfy_search_term = json_decode($lmgtfy_json_feed); 
$number = rand(0, count($lmgtfy_search_term)-1); 
$search_term = $lmgtfy_search_term[number]->q; 

echo json_encode($search_term); 
+0

var_dump($ term [$ number])'说什么?如果是NULL,'var_dump($ term)'说的是什么(应该很长,只是解析前几行来获得想法) – Stefan 2012-03-04 20:44:15

+0

@Stefan N'var_dump($ term [$ number])'有时会显示“ q“字符串和其他时间,它显示字符串”空“更多时候它只是显示”空“ – jeff 2012-03-04 20:54:14

回答

3

您在使用完整的阵列$number$term关键。

如果你想从数组$term选择一个随机元素,使用PHP的rand功能而不是创建和洗牌的数组:

$number = rand(0, count($term)-1); 
$search_term = $term[$number]->q; 
+0

感谢这很好的工作。我会接受你的回答:) – jeff 2012-03-04 20:46:06

+0

它的作品,但如果我刷新页面几次,它又开始显示“空”? – jeff 2012-03-04 20:49:33

+0

数组'$ term'是否总是包含500个项目?我更新了我的答案,将可变数组长度考虑在内。我还在rand函数中加入了'0',因为前面的代码永远不会返回'$ term'数组的第一项。 – knittl 2012-03-04 20:52:15

1

只需使用

$term_item = $term[array_rand($term, 1)]; 
$search_term = (string)$term_item->q; 

希望帮助。

+0

'array_rand'将返回一个数组键,所以你仍然需要得到第一个项目。 – knittl 2012-03-04 21:01:16

+0

不行这是一个虚假陈述,@ knittl! 'array_rand($ arr,1)'返回键值,因为第二个参数是1.请参阅文档:http://de3.php.net/manual/en/function.array-rand.php – Stefan 2012-03-04 21:02:52

+0

对不起,我重读了那部分的文件。没关系,你仍然有你的+1;) – knittl 2012-03-04 21:06:33