PHP 2d阵列声明

时间:2009-06-05 02:22:27

标签: php multidimensional-array

我试图在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

引发的错误:

  

解析错误:语法错误,意外   '[',期待')'

11 个答案:

答案 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';

(请注意我的示例不会生成相同的数据结构,我只是演示了不同的方法)