【问题标题】:Push an array within an array在数组内推入数组
【发布时间】: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&lt;$last_array_cell ; $i++)
  • 在使用key访问数组元素前检查,请检查是否可用,如isset($keyword_array[$i])。它可能有助于消除通知错误。连接数组的另一种方法是 $array1+$array2。这也将起作用。请告诉我
  • @Adelphia 我现在不再收到错误消息(问题是什么?:O)
  • AND - 我仍然得到一个空数组:S
  • 问题是等号。它循环了所有索引,然后为等号循环了一个额外的时间。现在您需要检查 keyword_query() 函数,因为它返回一个空数组。

标签: php arrays function


【解决方案1】:

我把global $research_key_array, $keyword;从第一个函数改成了global $research_key_array;

现在效果很好!

感谢@Adelphia!

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2014-06-21
    • 2014-08-10
    • 1970-01-01
    • 2013-07-30
    • 2012-11-29
    相关资源
    最近更新 更多