Web

Преобразование массива php в Javascript

Как преобразовать массив PHP в такой формат:

Array (

    [0]   => 001-1234567

    [1]   => 1234567

    [2]   => 12345678

    [3]   => 12345678

    [4]   => 12345678

    [5]   => AP1W3242

    [6]   => AP7X1234

    [7]   => AS1234

    [8]   => MH9Z2324

    [9]   => MX1234

    [10] => TN1A3242

    [11] => ZZ1234

)

 в массив Javascript в формате, как показано ниже:

var cities = [

    "Aberdeen",

    "Ada",

    "Adamsville",

    "Addyston",

    "Adelphi",

    "Adena",

    "Adrian",

    "Akron",

    "Albany"

];

 

Ответ 1

Если у вас нет PHP 5.2, вы можете использовать что-то вроде этого:

function js_str($s) {

    return '"' . addcslashes($s, "\0..\37\"\\") . '"';

}

 function js_array($array) {

    $temp = array_map('js_str', $array);

    return '[' . implode(',', $temp) . ']';

}

echo 'var cities = ', js_array($php_cities_array), ';';

 

 Ответ 2

Я собираюсь предположить, что два массива, которые вы указали для PHP и JS, не связаны и они просто примеры того, как массивы выглядят на двух языках. Ясно, что вы не сможете преобразовать эти последовательности букв и цифр в названия городов.

PHP предоставляет функцию для преобразования PHP массивов в Javascript код: json_encode() (технически это формат JSON; JSON означает нотацию объектов JavaScript).

Используйте это так:

<script type='text/javascript'>

<?php

$php_array = array('abc','def','ghi');

$js_array    = json_encode($php_array);

echo "var javascript_array = ". $js_array . ";\n";

?>

</script>

Обратите внимание, что json_encode() доступна только в PHP 5.2 и выше, поэтому, если вы используете старую версию, вам нужно будет ознакомиться с руководством по вашей версии PHP.

 

Ответ 3

Вы можете преобразовать массивы php в javascript с помощью функции json_encode php:

<?php $phpArray = array(

          0   => 001-1234567, 

          1   => 1234567, 

          2   => 12345678, 

          3   => 12345678,

          4   => 12345678,

          5   => 'AP1W3242',

          6   => 'AP7X1234',

          7   => 'AS1234',

          8   => 'MH9Z2324', 

          9   => 'MX1234', 

          10 => 'TN1A3242',

          11 => 'ZZ1234'

    )

?>

<script type="text/javascript">

    var jArray = <?php echo json_encode($phpArray ); ?>;

    for(var i=0;i<12;i++){

        alert(jArray[i]);

    }

</script>

 

Ответ 4

Для многомерного массива в PHP 4 вы можете использовать следующий код:

function js_str($s) {

   return '"'.addcslashes($s, "\0..\37\"\\").'"';

}

 function js_array($array, $keys_array) {

  foreach ($array as $key => $value) {

    $new_keys_array   = $keys_array;

    $new_keys_array[] = $key;

    if(is_array($value)) {          

      echo 'javascript_array';

      foreach($new_keys_array as $key) {

        echo '["'.$key.'"]';

      }

      echo ' = new Array();';

      js_array($value, $new_keys_array);

    } else {

      echo 'javascript_array';

      foreach($new_keys_array as $key) {

        echo '["'.$key.'"]';

      }

      echo ' = '.js_str($value).";";                        

    }

  } 

}

 echo 'var javascript_array = new Array();';

js_array($php_array, array());

 

Ответ 5

Это моя функция. JavaScript должен быть под PHP, иначе используйте SESSION. 

<?php

 $phpArray=array(1,2,3,4,5,6);

?>

<div id="arrayCon" style="width:300px;"></div>

<script type="text/javascript">

var jsArray = new Array();

<?php

 $numArray=count($phpArray);

 for($i=0;$i<$numArray;$i++){

  echo "jsArray[$i] = ". $phpArray[$i] . ";\n";

 }

?>

$("#arrayCon").text(jsArray[1]);

</script>

Последний ряд может быть ....text(jsArray); и будет показан результат "1,2,3,4,5,6".

 

Ответ 6

Я использую поддельный массив php

<?php 

       // создайте свой массив следующим образом

       $php_array          = ["The","quick","brown","fox","jumps","over","the","lazy","dog"];

       // сделайте это следующим образом (простая переменная, но с разделителем)

       $php_fake_array = "The,quick,brown,fox,jumps,over,the,lazy,dog";

?>

 <script type="text/javascript">

        // используйте тот же разделитель для функции JS split()

        js_array = '<?php echo $php_fake_array; ?>'.split(',');

 </script>

если ваш массив заранее неизвестен:

<?php 

        $php_array = file('my_file.txt');

        $php_fake_array = "";

        // преобразуйте ваш массив с помощью конкатенации следующим образом

        foreach ($php_array as $cell){

            // поскольку этот массив неизвестен, используйте умный разделитель

            $php_fake_array .= $cell.",,,,,"; 

        }

?>

 <script type="text/javascript">

        // используйте тот же разделитель для функции JS split()

        js_array = '<?php echo $php_fake_array; ?>'.split(',,,,,');

 </script>

 

Ответ 7

У меня была такая же проблема, и вот как я это сделал:

/*PHP FILE*/

 <?php

$data     = file_get_contents('http://yourrssdomain.com/rss');

$data     = simplexml_load_string($data);

$articles = array();

foreach($data->channel->item as $item){

    $articles[] = array(

        'title'             => (string)$item->title,

        'description' => (string)$item ->description,

        'link'             => (string)$item ->link, 

        'guid'           => (string)$item ->guid,

        'pubdate'     => (string)$item ->pubDate,

        'category'    => (string)$item ->category,

     );  

}

 // ЕСЛИ ВЫ РАСПЕЧАТАЕТЕ МАССИВ СТАТЕЙ, ТО ПОЛУЧИТЕ ТОТ ЖЕ МАССИВ, ЧТО И СЕЙЧАС, ПОЭТОМУ Я СОЗДАЮ ВЫХОДНУЮ СТРОКУ И С ПОМОЩЬЮ ЦИКЛА FOR ДОБАВЛЯЮ НЕСКОЛЬКО СИМВОЛОВ ДЛЯ ПОСЛЕДУЮЩЕГО РАЗДЕЛЕНИЯ С ПОМОЩЬЮ JAVASCRIPT

 $output="";

for($i = 0; $i < sizeof($articles); $i++){

    //# элементы

    //| атрибуты 

    if($i != 0) $output.="#";

    // ЕСЛИ ЭТО НЕ ПЕРВЫЙ ЭЛЕМЕНТ, ДОБАВЬТЕ '#' ДЛЯ РАЗДЕЛЕНИЯ КАЖДОГО ЭЛЕМЕНТА, А ЗАТЕМ '|' ДЛЯ РАЗДЕЛЕНИЯ КАЖДОГО АТРИБУТА ЭЛЕМЕНТА

    $output.=$articles[$i]['title']."|";

    $output.=$articles[$i]['description']."|";

    $output.=$articles[$i]['link']."|";

    $output.=$articles[$i]['guid']."|";

    $output.=$articles[$i]['pubdate']."|";

    $output.=$articles[$i]['category'];

}

echo $output;

 ?>

 /*AJAX */

 $(document).ready(function(e) {

var prodlist= [];

var attrlist= [];

  $.ajax({  

      type: "get",  

      url: "php/fromupnorthrss.php",  

      data: {feeding: "feedstest"},

      }).done(function(data) {

        prodlist= data.split('#');

        for(var i = 0; i < prodlist.length; i++){

            attrlist= prodlist[i].split('|');

            alert(attrlist[0]); /// ТЕПЕРЬ МОЖНО ДОБРАТЬСЯ ДО КАЖДОГО ЭЛЕМЕНТА

   });

});

Схожие статьи

Web

Преобразовать разделенных двоеточиями массив ключ: значение в массив с ключами

Что такое веб-дизайнер. Описание профессии и ее подводные камни
Web

Что такое веб-дизайнер. Описание профессии и ее подводные камни

Web

Может ли PHP, используя cURL, получить заголовки и тело ответа за один запрос

Web

Самый простой способ профилировать PHP-скрипт

×