我有一个看起来像这样的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列中的值?
答案 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;
如果数组包含多个具有相同Row
和Col
值的行,代码将返回最后一个匹配(但是,正如您所说,这不是您的情况)。