2014-03-14 1 views
0

Возможно ли в php изменить имя, используемое для создания ассоциативного массива? Я использую mongo в php, но он запутывается с использованием array() в обоих случаях с индексированными массивами и ассоциативными массивами. Я знаю, что вы можете сделать это в javascript, украв методы Array.prototype, но может ли это быть сделано в php, распространяющем родной объект? было бы намного проще, если бы это было array() и assoc() они оба создавали бы то же самое, хотя.php изменить имя для создания ассоциативного массива

EDIT -------

после лидерства Тристана, я сделал эту простую функцию легко записи в формате JSON в PHP. Он даже примет переменную от вашего php, поскольку все это заключено в кавычки.

$one = 'newOne'; 
$json = "{ 
    '$one': 1, 
    'two': 2 
}"; 

// doesn't work as json_decode expects quotes. 
print_r(json_decode($json)); 

// this does work as it replaces all the single quotes before 
// using json decode. 
print_r(jsonToArray($json)); 

function jsonToArray($str){ 
    return json_decode(preg_replace('/\'/', '"', $str), true); 
} 
+1

Читайте о работе PHP-массивов. http://docs.php.net/manual/en/language.types.array.php. Все массивы в PHP - это фактически упорядоченные карты. – Tristan

+1

И в чем причина этого? –

+0

будет делать @Tristan. причина только в том, чтобы иметь возможность понять встроенные массивы в mongodb – synthet1c

ответ

1

В PHP нет «имени, используемого для создания ассоциативного массива» или «имени, используемого для создания индексированного массива». Массивы PHP - это упорядоченные карты, как и во многих других языках сценариев.

Это означает, что вы можете использовать массив в зависимости от вашего местоположения.

Если вы хотите индексированный массив ..

$indexedArray = array(); 

$indexedArray[] = 4; // Append a value to the array. 

echo $indexedArray[0]; // Access the value at the 0th index. 

Или даже ..

$indexedArray = [0, 10, 12, 8]; 

echo $indexedArray[3]; // Outputs 8. 

Если вы хотите использовать не целые ключи с вашего массива, вы просто определяете их.

$assocArray = ['foo' => 'bar']; 

echo $assocArray['foo']; // Outputs bar. 
+0

nice, я никогда не знал, что вы можете использовать квадратную нотацию, я буду использовать квадратные скобки как ассоциативные и array() как индексированные. – synthet1c

+1

Да! «Начиная с PHP 5.4 вы также можете использовать синтаксис короткого массива, который заменяет array() на []." Выглядит намного лучше, чем раньше: P – Tristan

+0

Интересно, будут ли они реализовывать json ?? – synthet1c