2009-06-05 12 views
2

J'essaie de définir un tableau 2d en PHP. J'ai un code concept afin que vous puissiez voir la situation:PHP 2d Tableau Déclaration

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 

L'erreur qui est jeté:

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

+0

Je gardais lire le titre comme "décélération". Je pense que le E égaré (c'est "declAration") m'a découragé. –

+0

@Frank, j'ai édité la réponse à la question pour être correcte :) – alex

Répondre

1
$requiredFieldsByReferenceType ['Book']['volume'] = true; 
$requiredFieldsByReferenceType ['Book']['source'] = true; 
$requiredFieldsByReferenceType ['Book Section']['volume'] = true; 
5

Les autres réponses sont bonnes.
La syntaxe en utilisant array() est:

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

Une autre façon de le faire est par tableau d'imbrication() fonctions:

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

Seules les réponses qui assignent le tableau dans une instruction vont travaillez dans votre contexte (en définissant une propriété de classe) à moins de les mettre tous dans le constructeur. De même, je ne pense pas que print_r va travailler sans être dans une méthode ...

5

Vous devez utiliser array() dans les déclarations de valeur de tableau aussi:

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

Comment y accéder alors? La manière normale? $ myArray ['Book'] ['item1'] = false? – Diego

+0

@Diego: Oui. Après avoir construit ce tableau, vous pouvez y accéder via la syntaxe '$ variable [...]'. – Gumbo

0

PHP n » t faire des tableaux multidimensionnels. Vous devez le construire comme des tableaux de tableaux.

protected $myArray = array(
    'Book' => array(
    'item1' => true, 
    'item2' => true, 
), 
    'Chest' => array(
), 
    'item1' => true, 
    'item2' => false, 
); 
0
Class TestClass { 
    protected $myArray = array(
     "Book" => array('item1' => true, 'item2' => false), 
     "chest" => array('item1' => true, 'item2' => false), 
    ); 
} 
0

La syntaxe pour définir un réseau est array(key0 => value0, key1 => value1, key2 => value2, ...). Depuis un tableau à deux dimensions en PHP est seulement plusieurs tableaux comme valeurs dans un tableau, il ressemblerait à ceci:

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

Est-ce que ceci:

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

Par ailleurs, vous ne devriez pas initialiser vos attribues comme ça. Utilisez plutôt des 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); 
0

Il semble que vous mélangez des styles d'ajout à un tableau ici.

essayer

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

ou

$arr = array(); 

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

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

(S'il vous plaît noter mes exemples ne produisent pas la même structure de données, je ne faisais que la démonstration des différentes méthodes)

1
$arr1 = array(
    array(value1,value2,value3), 
    array(value4,value5,value6), 
    array(value7,value8,value9), 
);