PHP 2d Dizi Beyanı

8 Cevap php

Ben php bir 2d dizi tanımlamak için çalışıyorum. Eğer durumu görebilirsiniz yüzden bazı konsept kod var:

    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

Atılır hatası:

Parse error: syntax error, unexpected '[', expecting ')'

8 Cevap

Bu şekilde deneyin:

$requiredFieldsByReferenceType = array();
$requiredFieldsByReferenceType['Book']['volume'] = true;
$requiredFieldsByReferenceType['Book']['source'] = true;
$requiredFieldsByReferenceType['Book Section']['volume'] = true;
$requiredFieldsByReferenceType['Book Section']['source'] = true;
$requiredFieldsByReferenceType['Chart or Table']['volume'] = true;
$requiredFieldsByReferenceType['Chart or Table']['source'] = true;

var_dump($requiredFieldsByReferenceType);

ONE açıklamada dizi atayın Sadece cevaplar kurucusuna hepsini koymak sürece (bir sınıf özelliğini tanımlarken) sizin bağlamda çalışmak için gidiyoruz. Aynı şekilde, ben print_r bir yöntem olmadan işe olduğunu sanmıyorum ...

Bunu yapmanın başka bir yolu yuvalama dizi () işlevleri tarafından:

 $requiredFieldsByReferenceType = array(
           'Book' => array('volume' => true,
                                       'source' => true),
           'Book Section' => array('volume' => true,
                                                     'source' => true),
         ...
        );

PHP çok boyutlu dizileri yapmaz. Sen Dizilerle olarak oluşturması gerekir.

protected $myArray = array(
  'Book' => array(
    'item1' => true,
    'item2' => true,
  ),
  'Chest' => array(
  ),
    'item1' => true,
    'item2' => false,
);

Bir dizi tanımlamak için sözdizimi array(key0 => value0, key1 => value1, key2 => value2, ...). PHP iki boyutlu bir dizi bir dizi değerleri olarak sadece çoklu diziler olduğundan, bu gibi görünecektir:

$myArray =
    array(
        'Book' =>
            array(
                'item1' => true,
                'item2' => true
            ),
        'Chest' =>
            array(
                'item1' => true,
                'item2' => false
            )
    );

Yerine bunu:

	$myArray = array(
			'book' => array(
				'item1' => true,
				'item2' => true
			),
			'chest' => array(
				'item1' => true,
				'item2' => true,
			)
		);

By the way you shouldn't initialize your attribues like this. Rather use getters/setters.

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);

Burada bir diziye stilleri karıştırma konum gibi görünüyveya.

denemek

$arr = array(
    'key' => array ('key2' => 'value 1', 'key3' => 'value2'),
    'key12' => array('key4' => 'value4')
);

veya

$arr = array();

$arr['key1'] = array();
$arr['key2'] = array();

$arr['key1']['key3'] = 'value1';

(Ben sadece farklı yöntemler gösteren oldu, benim örnekler aynı veri yapısını üretmek değil unutmayın)