【问题标题】:How to put keys in array?如何将键放入数组?
【发布时间】:2017-08-11 03:04:31
【问题描述】:

我正在删除某个网站的详细信息。然后我想把 HTML 解析成一个 PHP 数组。

我想这样显示数组。我需要添加密钥,以便我可以轻松确定将来要使用哪些数据。

[info] => Array
    (
        [0] => info1
        [1] => info2
    )

这是我的代码:

$hk = array('info');
foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) {
    $hometps[] = $home->plaintext;
}
print_r(array_fill_keys($hk,$hometps));

但是输出会告诉我这个:

Array
(
    [info] => Array
        (
            [0] => info1
            [1] => info2
        )    
)

【问题讨论】:

  • 我想您可能对数组打印到屏幕时的外观感到困惑。您是否希望有一个名为info 的变量,它只是一个一维/索引数组?也许您可以通过添加更多输入数据/级别来阐明您想要的输出数组结构。

标签: php arrays key


【解决方案1】:

数组元素不能独立存在。考虑到您希望 info 作为索引,它必须是数组的一部分。 如果您想要可用的信息列表,则将它们分配给$info 变量,当您打印_r($info) 时,如下所示:

$info = array();
foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) {
    $info[] = $home->plaintext;
}
print_r($info);

你会得到:

Array
    (
        [0] => info1
        [1] => info2
    ) 

【讨论】:

    【解决方案2】:

    看起来您可能正在尝试重命名数组中的表示值,我猜也称为“键”。我建议在进入 foreach 时直接对 html 的输出执行此操作。那应该可以解决您的问题。它看起来像这样(底部的原始示例):

    $hk = array('info');
    foreach($html->find('div[id="home"] div[id="topinfo"] p') as $hk => $home) {
    $hometps[] = $home->plaintext;
    }
    print_r($hometps);
    
    
    foreach (array_expression as $key => $value)
        statement
    

    第一种形式循环遍历由array_expression 给出的数组。在每次迭代中,当前元素的值被分配给 $value 并且内部数组指针前移一个(因此在下一次迭代中,您将查看下一个元素)。

    第二种形式会在每次迭代时将当前元素的键额外分配给 $key 变量。

    PHP.net:foreach

    【讨论】:

      【解决方案3】:

      我认为每个人都对这里的问题和疑问感到困惑。下面将为您提供一个名为 $info 的数组,该数组将保存 foreach 循环的返回值:

      $info = Array();
      foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) {
          array_push($info,$home->plaintext);
      }
      print_r($info);
      

      这将输出:

      Array ( 
          [0] => info1 
          [1] => info2 
      )
      

      希望这是您想要实现的目标。

      【讨论】:

      • $hk = array('info'); $hometps = 数组(); foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) { $hometps[] = $home->plaintext; } print_r(array_fill_keys($hk,$hometps));我这样做了,仍然给了我同样不需要的输出
      • 看看这是否会影响你的船。
      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2020-06-27
      • 2022-01-11
      • 2020-03-17
      相关资源
      最近更新 更多