我试图在php中定义一个2d数组。我有一些概念代码,所以你可以看到这种情况:
class Testing {
protected $requiredFieldsByReferenceType = array(
['Book']['volume'] => true,
['Book']['source'] => true,
['Book Section']['volume'] => true,
['Book Section']['source'] => true,
['Chart or Table']['volume'] => true,
['Chart or Table']['source'] => true
);
print_r($requiredFieldsByReferenceType);
}//End Testing
引发的错误:
解析错误:语法错误,意外 '[',期待')'
答案 0 :(得分:5)
其他答案都很好 使用array()的语法是:
$requiredFieldsByReferenceType = array('Book'=>array('volume' => true,
'source' => true),
'Book Section'=>array('volume' => true,
'source' => true)
);
答案 1 :(得分:5)
您还必须在数组值声明中使用array()
:
protected $myArray = array(
"Book" => array(
"item1" => true,
"item2" => true
),
"Chest" => array(
"item1" => true,
"item2" => false
)
);
答案 2 :(得分:1)
$requiredFieldsByReferenceType ['Book']['volume'] = true;
$requiredFieldsByReferenceType ['Book']['source'] = true;
$requiredFieldsByReferenceType ['Book Section']['volume'] = true;
答案 3 :(得分:1)
只有在一个语句中分配数组的答案才会在你的上下文中工作(定义一个类属性),除非你把它们全部放在构造函数中。出于同样的原因,我认为print_r不会在没有方法的情况下工作......
答案 4 :(得分:1)
$arr1 = array(
array(value1,value2,value3),
array(value4,value5,value6),
array(value7,value8,value9),
);
答案 5 :(得分:0)
另一种方法是嵌套array()函数:
$requiredFieldsByReferenceType = array(
'Book' => array('volume' => true,
'source' => true),
'Book Section' => array('volume' => true,
'source' => true),
...
);
答案 6 :(得分:0)
PHP不做多维数组。您必须将其构造为数组数组。
protected $myArray = array(
'Book' => array(
'item1' => true,
'item2' => true,
),
'Chest' => array(
),
'item1' => true,
'item2' => false,
);
答案 7 :(得分:0)
Class TestClass {
protected $myArray = array(
"Book" => array('item1' => true, 'item2' => false),
"chest" => array('item1' => true, 'item2' => false),
);
}
答案 8 :(得分:0)
定义数组的语法是array(key0 => value0, key1 => value1, key2 => value2, ...)
。由于PHP中的二维数组只是多个数组作为数组中的值,因此它看起来像这样:
$myArray =
array(
'Book' =>
array(
'item1' => true,
'item2' => true
),
'Chest' =>
array(
'item1' => true,
'item2' => false
)
);
答案 9 :(得分:0)
请改为:
$myArray = array(
'book' => array(
'item1' => true,
'item2' => true
),
'chest' => array(
'item1' => true,
'item2' => true,
)
);
顺便说一下,你不应该像这样初始化你的属性。 而是使用getter / setter。
class TestClass {
protected $_myArray;
public function __construct()
{
$this->setMyArray();
}
public function setMyArray()
{
$this->_myArray = array(
'book' => array(
'item1' => true,
'item2' => true
),
'chest' => array(
'item1' => true,
'item2' => true,
)
);
}
}
$foo = new TestClass();
print_r($foo);
答案 10 :(得分:0)
看起来你在这里混合了附加到数组的样式。
试
$arr = array(
'key' => array ('key2' => 'value 1', 'key3' => 'value2'),
'key12' => array('key4' => 'value4')
);
或
$arr = array();
$arr['key1'] = array();
$arr['key2'] = array();
$arr['key1']['key3'] = 'value1';
(请注意我的示例不会生成相同的数据结构,我只是演示了不同的方法)