【问题标题】:PHP - Assigning Two Values To One Key in Array [closed]PHP - 为数组中的一个键分配两个值[关闭]
【发布时间】:2013-12-21 13:06:00
【问题描述】:

我需要得到一个这种格式的数组:

$arr = {

$domain => $PR => $OBL

}

换句话说,我希望每个域都充当一个键,它有两个值,PR 和 OBL(pagerank 和出站链接)分配给它。只为一个值执行此操作很容易,我只需循环并设置:$arr[$domain] = $PR;

然后通过简单的 for-each 循环很容易提取数据。但是,为每个域存储两个值的最佳方法是什么?我如何循环遍历它以稍后提取数据?

【问题讨论】:

  • 发布预期输出
  • 该语法无效。只需使用数组存储domain 属性:$domain => array($PR, $OBL)

标签: php arrays loops key


【解决方案1】:

假设您运行的是最新的 PHP (5.5.x):

$arr = [
  'domain1.tld' => [8, 2543],
  'domain2.tld' => [3, 684],
];
foreach($arr as $domain => list($pr, $obl))
  echo "<p>$domain has PageRank $pr and $obl outbound link(s)</p>";

或者,更兼容和更详细:

$arr = [
  'domain1.tld' => ['PR' => 8, 'OBL' => 2543],
  'domain2.tld' => ['PR' => 3, 'OBL' => 684],
];
foreach($arr as $domain => $properties) {
  $pr    = $properties['PR'];
  $obl   = $properties['OBL'];
  echo "<p>$domain has PageRank $pr and $obl outbound link(s)</p>";
}

【讨论】:

  • 澄清一下:使用旧版本也完全可以做到这一点,只是语法糖少一点。
  • 是的,在 5.4 之前的版本中,您需要将 [...] 声明替换为 array(...),并且可以将 foreach...list 组合替换为中间的单独行。
  • 谢谢,非常感谢。
【解决方案2】:

添加到 Niels Keurentjes 的回答中:

$arr = array(
   'domain1.tld' => array(8, 2543),
   'domain2.tld' => array(3, 684),
);

array_map(
   function ($domain,$values){
      list($pr, $obl) = $values;
        echo "<p>$domain has PageRank $pr and $obl outbound link(s)</p>";
}
,array_keys($arr)
,$arr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多