পিএইচপি অ্যারেটিকে জাভাস্ক্রিপ্টে রূপান্তর করুন


182

আমি এই জাতীয় বিন্যাসে পিএইচপি অ্যারে রূপান্তর করতে পারি

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
)

নীচে বিন্যাসে একটি জাভাস্ক্রিপ্ট অ্যারে?

var cities = [
    "Aberdeen",
    "Ada",
    "Adamsville",
    "Addyston",
    "Adelphi",
    "Adena",
    "Adrian",
    "Akron",
    "Albany"
];

3
আপনি আপনার প্রশ্ন পরিষ্কার করতে পারেন? আপনি কি সত্যিই একটি জাভাস্ক্রিপ্ট অ্যারে তৈরি করার চেষ্টা করছেন, বা আপনি কোনও স্ট্রিং তৈরি করার চেষ্টা করছেন যা আপনি এটি তৈরি করতে পারবেন এমন একটি scriptট্যাগ রেখে দিতে পারেন, বা আপনি কোনও এজ্যাক্স অনুরোধের জবাবে ফেরত পাঠানোর জন্য JSON তৈরি করার চেষ্টা করছেন , বা ... (এছাড়াও, আপনি যখন আপনার প্রশ্ন জিজ্ঞাসা করছেন তখন ডান দিকে কীভাবে ফর্ম্যাট বাক্সটি পরীক্ষা করা উচিত , এবং পৃষ্ঠার প্রশ্নপত্রের ঠিক উপরে [?] থেকে লিঙ্ক করা হয়েছে ।)
টিজে ক্রাউডার

উত্তর:


59

স্পুডলির উত্তর ঠিক আছে

সুরক্ষা বিজ্ঞপ্তি: নিম্নলিখিত আর আপনার জন্য আর প্রয়োজন হবে না

আপনার যদি পিএইচপি 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
সম্মত হন: আপনি যদি ও পুরাতন পিএইচপি ব্যবহার করেন তবে আপনাকে নিজের লেখা দরকার। তবে আপনার পিএইচপি আপগ্রেড করার বিষয়টিও যদি সম্ভব হয় তবে আপনার বিবেচনা করা উচিত!
স্পুদলি

5
এমনকি যদি আপনি পুরাতন পিএইচপি ব্যবহার করছেন, নিজের লিখবেন না, একটি বিদ্যমান গ্রন্থাগার নিন যা একাধিক ব্যক্তি / প্রকল্প দ্বারা রক্ষণাবেক্ষণ / ব্যবহৃত হয়। সুতরাং এই উত্তরটি কেবল কীভাবে কিছু করা যেতে পারে তা দেখিয়ে দিচ্ছে তবে পিএইচপি সংস্করণ নির্বিশেষে এটির এটির সুপারিশ করা উচিত নয়। উদাহরণস্বরূপ PEAR.php.net/package/Services_JSON
hakre

তুমি ঠিক বলছো. তবে উপরের কোডটি দুটি বড় প্রকল্পে বছরের পর বছর ধরে ব্যবহৃত / পরীক্ষিত হয়েছে।
উদো জি

1
বিটিডাব্লু , আপনি অ্যারে_ম্যাপ কলটি যুক্ত করেছেন। এবং, সত্যই, মূল প্রশ্নের কোনও সঠিক বৈধ উত্তর সম্পাদনা করার দরকার নেই এবং কোনও সুরক্ষা সমস্যা না এলে এটি একটি "সুরক্ষা বিজ্ঞপ্তি" দিয়ে চিহ্নিত করার দরকার নেই।
উদো জি

1
@ ইউডিজি: আপনি যদি কোনও সম্পাদনার সাথে একমত নন তবে আপনি নিজেই আবার এটি সম্পাদনা করতে মুক্ত হন। হ্যাকের একটি বক্তব্য রয়েছে যে এই প্রশ্নটি পড়ার জন্য এমন কোনও লাইব্রেরিটি নিরাপদ এবং ভালভাবে পরীক্ষিত বলে পরিচিত , যেমন পিয়ার থেকে কেবল এই যোগ্যতাটি যোগ্যতার চেয়ে না নেওয়ার জন্য ব্যবহার করা বোধগম্য হবে । এছাড়াও, এটি উল্লেখ করার মতো যে এই প্রশ্নটি জিজ্ঞাসা করা হলে পিএইচপি 5.2 ইতিমধ্যে সমর্থনের বাইরে ছিল। আমি এখন যেমন লিখছি, এটি দু'বছর ধরে অসমর্থিত এবং এটি সুরক্ষিত সমস্যাগুলি জেনে ফেলেছে যা প্যাচ করবে না। এই উত্তরটিতে কোডটি বিবেচনা করার আগে এটি পিএইচপি 5.2 ব্যবহার করা কেবল একটি সুরক্ষার সমস্যা।
স্পুদলি

435

আমি ধরে নিতে যাচ্ছি যে আপনি পিএইচপি এবং জেএস এর জন্য যে দুটি অ্যারে দিয়েছেন তা সম্পর্কিত নয় এবং তারা দুটি ভাষায় অ্যারে কীভাবে দেখায় তার উদাহরণ মাত্র। স্পষ্টতই আপনি চিঠিপত্র এবং সংখ্যাগুলির ক্রমগুলি সেই শহরের নামগুলিতে রূপান্তর করতে সক্ষম হবেন না।

পিএইচপি একটি ফাংশন জাভাস্ক্রিপ্ট কোড মধ্যে পিএইচপি অ্যারে রূপান্তর করতে প্রদান করে: json_encode()। (প্রযুক্তিগতভাবে এটি JSON ফর্ম্যাট; জেএসওএন জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন হিসাবে চিহ্নিত)

এটি এর মতো ব্যবহার করুন:

<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()কেবল পিএইচপি 5.2 এবং তার বেশি ক্ষেত্রে উপলভ্য, সুতরাং আপনি যদি পুরানো সংস্করণ ব্যবহার করেন তবে আপনাকে একটি বিদ্যমান ব্যবহার করতে হবে - পিএইচপি ম্যানুয়াল পৃষ্ঠাতে এটির প্রয়োজন অনুসারে লোকদের দ্বারা লিখিত ফাংশনগুলির সাথে মন্তব্যগুলিও অন্তর্ভুক্ত রয়েছে। (তবে এটি বলেছে, আপনি যদি পিএইচপি 5.2 এর চেয়ে বেশি পুরানো কিছু ব্যবহার করেন তবে আপনাকে এএসএপটি আপগ্রেড করা উচিত)


আপনি জাভাস্ক্রিপ্ট অ্যারের শেষে একটি সেমিকোলন মিস করছেন, এবং পিএইচপি অ্যারেগুলি যেভাবে আরম্ভ করা হচ্ছে তা নয় (অ্যারে ('এবিসি' ....) চেষ্টা করুন) ... যাইহোক, সম্ভবত ওপি চাইবে কারণ আপবোট করুন
ড্যানিয়েল স্লুফ

@ স্পডলি হাই, আমি এটি চেষ্টা করেছি এবং জাভাস্ক্রিপ্টে পিএইচপি তে তৈরি অ্যারেটি অ্যাক্সেস করার চেষ্টা করেছি console.log('stuff: ' + javascript_array[0]);, তবে এটির javascript_arrayসংজ্ঞা দেওয়া হয়নি
গ্রোলার

যদি আপনার পিএইচপি অ্যারেটিতে বিশেষ অক্ষর থাকে তবে এটি ভুল হয়ে যাবে। ইউরেলকোড () ফাংশন ব্যবহার করে আপনি বিশেষ অক্ষরগুলি থেকে বাঁচতে পারেন। আমার উত্তর দেখার stackoverflow.com/questions/5618925/...
বেন Rogmans

1
কেবল উল্লেখ করতে যে json_encode একটি জাভাস্ক্রিপ্ট অবজেক্টের সংজ্ঞা দেয়, একটি অ্যারে নয়
প্যাট্রিক মুর

1
@ পেট্রিকমুর - আপনি যদি এটি সম্পর্কে উদ্বিগ্ন হতে চান তবে json_encodeএকটি জেএসওএন স্ট্রিং আউটপুট দেয়, যা জেএস অবজেক্ট বা জেএস অ্যারে বা এমনকি একটি একক স্কেলারের মানকে উপস্থাপন করতে পারে, যদি আপনি এটি পাস করেন তবে। আমার উত্তরের উদাহরণগুলি কোনও জাভাস্ক্রিপ্ট অ্যারে আউটপুট দেবে, কোনও বস্তু নয়।
স্পডলি

38

বোবা এবং সহজ:

var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];

6
কৌতূহলের বাইরে : স্ট্রিংয়ে কোট, ডাবল কোট এবং / বা কমা থাকে তখন কী হবে?
নিস

1
যেহেতু এটির জন্য একটি ফাংশন রয়েছে, কারণ কোনও ভাল কারণ না থাকলে এটি একটি অস্থায়ী সমাধানের চেয়ে বেশি পছন্দ করা উচিত; কোন কারণ এখানে বর্ণিত হয়।
সিজেবার্থ

ইউনিকোড চরিত্রগুলির জন্য আরও ভাল কাজ করে (আমার ক্ষেত্রে উর্দু)
হামদ খান

33

আউটপুটটি json_encodeজাভাস্ক্রিপ্ট আক্ষরিক হওয়ায় আপনাকে পার্সজেএসএন কল করতে হবে না এটি কেবল একটি জেএস ভেরিয়েবলকে নির্ধারণ করুন

<script type="text/javascript">
    //Assign php generated json to JavaScript variable
    var tempArray = <?php echo json_encode($php_array); ?>;

   //You will be able to access the properties as 
    alert(tempArray[0].Key);
</script>

23

আপনি পিএইচপি এর json_encodeফাংশন ব্যবহার করে পিএইচপি অ্যারেগুলিকে জাভাস্ক্রিপ্টে রূপান্তর করতে পারেন

<?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>

3
সেই লুপটি ভয়ানক
এরিক

2
ওয়েল এটি প্রদর্শনের উদ্দেশ্যে ছিল :)
দিপেশ কেসি

7
@ এরিক উদাহরণ থেকে যেমন প্রশ্ন থেকে নেওয়া হয়েছে তেমন গ্রহণ করা হয়েছিল । আমি ব্যবহার করতে পারতাম console.log()তবে প্রশ্নটি নিজেই খুব বেসিক (এবং ব্যবহারকারীদের ব্রাউজার কোড পরিদর্শন সরঞ্জামটির অভিজ্ঞতা নেই), তাই আমি সতর্কতার সাথে যাওয়ার সিদ্ধান্ত নিয়েছি () যেহেতু ব্যবহারকারী এটি সরাসরি দেখতে পাবেন B তবে আপনি এটি খুব ভাল জানেন এটি প্রশ্নের উদ্বিগ্ন অংশ নয়, কেবল যুক্তিটি কাজ করে কিনা তা যাচাই করার একটি উপায়।
দিপেশ কেসি

17

আমি জাভাস্ক্রিপ্টে পিএইচপি অ্যারে নিয়ে কাজ করার দ্রুত এবং সহজ উপায়টি এটি করাই:

পিএইচপি:

$php_arr = array('a','b','c','d');

javascript:

//this gives me a JSON object
js_arr = '<?php echo JSON_encode($php_arr);?>';


//Depending on what I use it for I sometimes parse the json so I can work with a straight forward array:
js_arr = JSON.parse('<?php echo JSON_encode($php_arr);?>');

10

খুবই সোজা ...!

এই পদ্ধতিটি ব্যবহার করুন:

<?php echo json_encode($your_array); ?>; 

লারাভেল ব্লেডে {{} this এই পদ্ধতিটি ব্যবহার করুন:

{{ str_replace('&quot;', '', json_encode($your_array)) }} 

সম্পর্কিত এবং অপ্রচলিত অ্যারে জন্য কাজ করা।


1
আপনি যদি ব্যবহারকারীর ডেটা বিশ্বাস করেন তবে মোহাম্মদকাউসারা পদ্ধতিটি আমার পক্ষে সবচেয়ে ভাল কাজ করে।
টমাস ক্রাফটি

6

আপনি এইভাবে করতে পারেন

<script>  
    <?php 
        $php_array = array('abc','def','ghi');
        $code_array = json_encode($php_array);
    ?>  
    var array_code = <?php echo $code_array; ?>;
    console.log(array_code);
</script>

6

খুব সহজ আমি এইভাবে ব্যবহার করি:

জাভাস্ক্রিপ্ট :

var arrayJavascript = <?php echo json_encode($arrayPhp) ?>;

পিএইচপি অ্যারেটিকে জাভাস্ক্রিপ্টে রূপান্তর করুন

শুভেচ্ছা সহ!


4

পিএইচপি 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());

4

এটি আমার কাজ। জাভাস্ক্রিপ্ট অবশ্যই পিএইচপি এর অধীনে থাকতে হবে অন্যথায় 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>

শেষ সারিটি হতে পারে .... পাঠ্য (jsArray); এবং "1,2,3,4,5,6" দেখানো হবে


3

আমি একটি নকল পিএইচপি অ্যারে ব্যবহার করি

<?php 
       // instead to create your array like this
       $php_array = ["The","quick","brown","fox","jumps","over","the","lazy","dog"];

       // do it like this (a simple variable but with separator)
       $php_fake_array = "The,quick,brown,fox,jumps,over,the,lazy,dog";
?>

<script type="text/javascript">

        // use the same separator for the JS split() function
        js_array = '<?php echo $php_fake_array; ?>'.split(',');

</script>

যদি কখনও আপনার অ্যারে অজানা হয় (ইতিমধ্যে তৈরি)

<?php 
        $php_array = file('my_file.txt');
        $php_fake_array = "";

        // transform your array with concatenate like this
        foreach ($php_array as $cell){

            // since this array is unknown, use clever separator
            $php_fake_array .= $cell.",,,,,"; 
        }
?>

<script type="text/javascript">

        // use the same separator for the JS split() function
        js_array = '<?php echo $php_fake_array; ?>'.split(',,,,,');

</script>

... অথবা আপনি "জাল" পেতে প্রথম অ্যারে () প্রেরণ করতে পারেন। আমি জানি এটি একটি পুরানো প্রতিক্রিয়া, কিন্তু ধারণাটি কেবল আমার মনকে অতিক্রম করেছে।
পিটার লেঞ্জো

1
নিশ্চিত, তবে আমার উপায় হ'ল এই পৃষ্ঠায় সমস্ত পরামর্শের দ্রুততম। কখনও কখনও, গতি একটি গুরুত্বপূর্ণ ফ্যাক্টর হতে পারে।
মিক

2

এটি নিরাপদ উপায়ে করা যেতে পারে।

যদি আপনার পিএইচপি অ্যারেটিতে বিশেষ অক্ষর থাকে তবে আপনাকে পিএইচপিতে কাঁচাল্লেঙ্কোড () ব্যবহার করতে হবে এবং তারপরে এড়াতে জেএসে ডিকোডেরিউআরকিউম্পোনেন্ট () ব্যবহার করতে হবে। এবং জেএসএনকে দেশীয় জেএসে পার্স করুন। এটা চেষ্টা কর:

var data = JSON.parse(
        decodeURIComponent(
            "<?=rawurlencode(json_encode($data));?>"
        )
    );

console.log(data);

1

আমারও একই সমস্যা ছিল এবং আমি এটি এটিই করেছিলাম।

/*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,

    );  
}

// IF YOU PRINT_R THE ARTICLES ARRAY YOU WILL GET THE SAME KIND OF ARRAY THAT YOU ARE GETTING SO I CREATE AN OUTPUT STING AND WITH A FOR LOOP I ADD SOME CHARACTERS TO SPLIT LATER WITH JAVASCRIPT

$output="";

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

    //# Items
    //| Attributes 

    if($i != 0) $output.="#"; /// IF NOT THE FIRST

// IF NOT THE FIRST ITEM ADD '#' TO SEPARATE EACH ITEM AND THEN '|' TO SEPARATE EACH ATTRIBUTE OF THE ITEM 

    $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;

?>
/* php file */


/*AJAX COMUNICATION*/

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

/*AJAX COMUNICATION*/

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]); /// NOW I CAN REACH EACH ELEMENT HOW I WANT TO. 
        }
   });
});

আমি আসা করি এটা সাহায্য করবে.


1

সহজবোধ্য রাখো :

var jsObject = JSON.parse('<?= addslashes(json_encode($phpArray)) ?>');

0

আপনার যদি এইচটিএমএল পৃষ্ঠার উত্স কোডে সরাসরি মুদ্রণের জন্য একটি বহুমাত্রিক পিএইচপি অ্যারের প্রয়োজন হয়, এবং একটি হ'ল মানব-পঠনযোগ্য জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (ওরফে জেএসএন) ফ্যাশনে, এই সুন্দর ফাংশনটি ব্যবহার করুন যা আমি খুঁজে পেয়েছি http://php.net/manual /en/function.json-encode.php#102091 কে "বোহওয়াজ" ডাকনাম দিয়েছেন od

<?php

function json_readable_encode($in, $indent = 0, $from_array = false)
{
    $_myself = __FUNCTION__;
    $_escape = function ($str)
    {
        return preg_replace("!([\b\t\n\r\f\"\\'])!", "\\\\\\1", $str);
    };

    $out = '';

    foreach ($in as $key=>$value)
    {
        $out .= str_repeat("\t", $indent + 1);
        $out .= "\"".$_escape((string)$key)."\": ";

        if (is_object($value) || is_array($value))
        {
            $out .= "\n";
            $out .= $_myself($value, $indent + 1);
        }
        elseif (is_bool($value))
        {
            $out .= $value ? 'true' : 'false';
        }
        elseif (is_null($value))
        {
            $out .= 'null';
        }
        elseif (is_string($value))
        {
            $out .= "\"" . $_escape($value) ."\"";
        }
        else
        {
            $out .= $value;
        }

        $out .= ",\n";
    }

    if (!empty($out))
    {
        $out = substr($out, 0, -2);
    }

    $out = str_repeat("\t", $indent) . "{\n" . $out;
    $out .= "\n" . str_repeat("\t", $indent) . "}";

    return $out;
}

?>       

দয়া করে কিছু মনে করবেন না !! এখন আমরা কেবল এটি ব্যবহার করতে পারি: json_encode ($ অ্যারে, JSON_PRETTY_PRINT); এবং খুশি!
হিটার

0

নীচে পিএইচপি অ্যারেটিকে জাভাস্ক্রিপ্ট অ্যারেতে রূপান্তর করতে খুব সহজ কৌশল:

$array = array("one","two","three");

নীচে জেএস:

// Use PHP tags for json_encode()

var js_json =  json_encode($array);
var js_json_string = JSON.stringify(js_json);
var js_json_array = JSON.parse(js_json_string);

alert(js_json_array.length);

ইহা যাদুর মত কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.