【发布时间】:2015-09-01 12:09:02
【问题描述】:
我创建了一个名为“keyword_query()”的函数,它获取单个字符串并在 API 上使用此变量运行查询 - 然后 API 返回一个数组(它是全局定义的,因此它也在函数之外进行了更改)。
第二个函数“keyword_query_array()”应该多次运行“keyword_query()”,并推送到一个新数组(也是全局的)并获得一个包含多个数组的数组。此函数获取关键字数组的变量。该函数获取数组并在数组中导航没有任何问题。
请注意代码中的cmets:
<?php
// Runs the query "Research Key" on a keyword and get App ids, names, ect'.
function keyword_query($keyword){
global $research_key_array, $keyword;
// Add the keyword to the "Research Key" query:
$research_key_query = "https://example.com/api/banana/ajax/kaka?term=$keyword&country=US&auth_token=666";
// Create a stream for Json. That's how the code knows what to expect to get.
$context_opts = array(
'http' => array(
'method' => "GET",
'header' => "Accepts: application/json\r\n"
)
);
$context = stream_context_create($context_opts);
// Get the Json
$research_key_json = file_get_contents($research_key_query, false, $context);
// Turn Json to a PHP array
$research_key_array = json_decode($research_key_json, true);
//var_dump($research_key_array);
//print_r($research_key_array);
return $research_key_array;
}
// Runs the keyword_query() function on an array of keywords.
function keyword_query_array($keyword_array){
global $array_of_key_queries;
// Get the last array cell
$last_array_cell = count($keyword_array);
// Navigate through the array
for ($i=0; $i<=$last_array_cell ; $i++) {
//echo $keyword_array[$i]; ****works!
// Error here: Notice: Undefined offset: 3 in C:\wamp\www\PHPExcel\api_fun.php on line 51
array_push( $array_of_key_queries, keyword_query($keyword_array[$i]) );
}
var_dump($array_of_key_queries);
}
但是当我到达这一行时:
array_push( $array_of_key_queries, keyword_query($keyword_array[$i]) );我得到一个错误:
注意:未定义的偏移量:C:\wamp\www\PHPExcel\api_fun.php 第 51 行中的 3
使用这个 var_dump:
array (size=4)
0 =>
array (size=1)
'keyword' =>
array (size=0)
empty
1 =>
array (size=1)
'keyword' =>
array (size=0)
empty
2 =>
array (size=1)
'keyword' =>
array (size=0)
empty
3 =>
array (size=1)
'keyword' =>
array (size=0)
empty
在这种情况下,在数组中推送数组的正确方法是什么?
【问题讨论】:
-
尝试将您的 for 循环更改为
for ($i=0; $i<$last_array_cell ; $i++) -
在使用key访问数组元素前检查,请检查是否可用,如isset($keyword_array[$i])。它可能有助于消除通知错误。连接数组的另一种方法是 $array1+$array2。这也将起作用。请告诉我
-
@Adelphia 我现在不再收到错误消息(问题是什么?:O)
-
AND - 我仍然得到一个空数组:S
-
问题是等号。它循环了所有索引,然后为等号循环了一个额外的时间。现在您需要检查
keyword_query()函数,因为它返回一个空数组。