如何使用内部值的键访问PHP数组

时间:2015-03-25 08:49:46

标签: php arrays

我有一个看起来像这样的PHP数组:

array(3) {
  [0] => array(3) {
    ["Row"] => string(1) "1"
    ["Col"] => string(1) "1"
    ["Value"] => string(4) "lbl1"
  }
  [1] => array(3) {
    ["Row"] => string(1) "2"
    ["Col"] => string(1) "1"
    ["Value"] => string(4) "lbl2"
  }
  [2] => array(3) {
    ["Row"] => string(1) "3"
    ["Col"] => string(1) "1"
    ["Value"] => string(4) "lbl3"
  }
}

我知道每一对“Row”和“Col”都与其他对不同。我无法改变我创建阵列的方式。

我可以以某种方式访问​​数组,就像这样的哈希表:arr[Row => 0][Col => 0]并获取第0行和第0列中的值?

3 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你需要重新格式化你的数组,以便像这样访问它:$array[1][1]获得Value lbl1

尝试$array是您的初始Array

<?php

$return = array();
foreach($array as $value)
    $return[$value['Row']][$value['Col']] = $value['Value'];    

var_dump($return[1][1]); // outputs "lbl1"

答案 1 :(得分:0)

不确定为什么需要col和row作为字段。你能把主数组的密钥作为一个吗?如果它是一个只有col / row的二维数组,那么你应该能够正确地使用这些键来创建你的数组。

$foo[1][1]="lbl1";

$foo[2][1]="lbl2";

$foo[3][1]="lbl3";

然后,访问$foo[1][1] returns "lbl1"

就像访问一样简单

答案 2 :(得分:0)

您可以使用 array_walk 获取值:

<?php

$a = array(
  0 => array(
    "Row" => "1",
    "Col" => "1",
    "Value" => "A",
  ),
  1 => array(
    "Row" => "2",
    "Col" => "1",
    "Value" => "B",
  ),
  2 => array(
    "Row" => "3",
    "Col" => "1",
    "Value" => "C",
  )
);

$rowNeedle = 3;
$colNeedle = 1;
$result = null;

array_walk($a, function($row, $key) use($rowNeedle, $colNeedle, &$result) {
  if($row['Row'] == $rowNeedle && $row['Col'] == $colNeedle) $result = $row['Value'];
});

echo $result;

如果数组包含多个具有相同RowCol值的行,代码将返回最后一个匹配(但是,正如您所说,这不是您的情况)。