Преобразовать строку в массив в JavaScript - PullRequest
1 голос
/ 25 июня 2011

У меня есть строка PHP вроде этого:

$string = 'a => 1 , b => 2 , c => 3 , d => 4';

, который я построил на основе данных из базы данных, где каждый "x => y" представляет ассоциативные отношения между x и y.

Затем я передаю эту строку в HTML-документ (JQuery) и пытаюсь создать из него массив в JavaScript, чтобы я мог обработать его на стороне клиента.

ВОПРОС:

Можно ли создать массив JavaScript из строки?
Например, мне нужно иметь возможность получить значения в массиве, вызвав 'alert(array["c"]);' или что-то подобное.

ПРИМЕЧАНИЕ - не стесняйтесь изменять семантику вышеуказанной строки ($ string) по мере необходимости.

Любую помощь оценили, ребята ....

Ответы [ 4 ]

6 голосов
/ 25 июня 2011

Вы должны посмотреть в JSON. PHP имеет функции для записи JSON , и javascript может декодировать такие объекты JSON и создавать собственные объекты

3 голосов
/ 25 июня 2011

код PHP

(например, файл, например, array.php):

$array=array(
    'a'=>'I am an A',
    'param2_customname'=>$_POST['param2'],
    'param1'=>$_POST['param1']
);
echo json_encode($array);

JQuery код:

$.post('array.php', {'param1': 'lol', 'param2': 'helloworld'}, function(d){
   alert(d.a);
   alert(d.param2_customname);
   alert(d.param1);
},'json');

Вы можете использовать это для массивов, всегда помните тег 'json' в конце запроса.

2 голосов
/ 25 июня 2011

Я бы сделал это

<?php
$string = "a => 1, b => 2";
$arr1 = explode(",",$string);
$arr2 = array();
foreach ($arr1 as $str) {
    $arr3 = explode("=>", $str);
    $arr2[trim($arr3[0])] = trim($arr3[1]);
}
?>
<script type="text/javascript">
$(document).ready(function(){
    var myLetters = new Array();
    <?php foreach($arr2 as $letter => $number): ?>
    myLetters['<?php echo $letter; ?>'] = "<?php echo $number; ?>";
    <?php endforeach; ?>
});
</script>

, который выведет это

<script type="text/javascript">
$(document).ready(function(){
    var myLetters = new Array();
        myLetters['a'] = "1";
        myLetters['b'] = "2";
    });
</script>
2 голосов
/ 25 июня 2011

Вы можете использовать метод split () в javascript:

http://www.w3schools.com/jsref/jsref_split.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...