Перебираете PHP-массив в jQuery?
Вопрос
Как мне выполнить итерацию по PHP-массиву в jQuery?У меня есть массив в php с именем $viewfields
.Как мне выполнить итерацию по каждому элементу этого массива с помощью jQuery?
ПРАВКА 1
<?php foreach ($viewfields as $view): ?>
if(<?=$view['Attribute']['type'];?>=='text'||<?=$view['Attribute']['type'];?>=='number')
{
$("<input id=input<?=$view['Attribute']['sequence_no'];?> type= 'text' style= 'width:<?=$view['Attribute']['size'];?>px' data-attr=<?=$view['Attribute']['type'];?> ></input><br>").appendTo("#fb_contentarea_col1down21 #<?=$view['Attribute']['sequence_no'];?>");
}
Если я дам
$.each(arrayfromPHP,function(i,elem){
}
как мне написать код для $view['Атрибут']['тип'] в jQuery?elem['Атрибут'] ['тип'], я полагаю, не будет работать?
ПРАВКА 2
элемент ['Атрибут']['тип'] действительно работает
Решение
var arrayFromPHP = <?php echo json_encode($viewFields) ?>;
$.each(arrayFromPHP, function (i, elem) {
// do your stuff
});
Чтобы лучше понять, как все соединено (спасибо Джонатану Сэмпсону):
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var arrayFromPHP = <?php echo json_encode($viewFields) ?>;
$.each(arrayFromPHP, function (i, elem) {
// do your stuff
});
</script>
</head>
<body>
</body>
</html>
Конечно, вы можете поместить этот тег SCRIPT
в любое место на странице или даже сослаться на arrayFromPHP
из внешних сценариев как arrayFromPHP
объявлен как глобальный.
ИЗМЕНИТЬ
Учитывая этот массив PHP:
$viewFields = array(
'Attributes' => array(
'type' => 'foo',
'label' => 'bar',
),
'Attributes' => array(
'type' => 'foo',
'label' => 'bar',
),
);
Доступ к его элементам с помощью jQuery будет осуществляться следующим образом:
// json_encode() will output:
// {"Attributes":{"type":"foo","label":"bar"}}
$.each(arrayFromPHP, function (i, elem) {
alert(elem.type);
alert(elem.label);
});
Другие советы
Самый простой способ - это:
PHP:
$an_array=array();
$an_array[]='Element 1';
$an_array[]='Element 2';
$an_array[]='Element 3';
$array_js=implode(",",$this->js_pagina); //join elements in a string
JQUERY:
//Converter
window.array=new String('<?php echo $array_js?>');
window.array=window.js_pagina.split(",");
//Iterator
$.each(window.array, function (i, elem)
{
alert(elem);
});