LoginSignup
0
0

Vue.js でPHPの連想配列を出力するときのたった一つのコツ

Posted at

はじめに

.phpファイル上でVue.jsを動かしていて、ブラウザ上でのアクションに合わせてPHPの変数を出力したくなり、はてどうやるんだ?と調べた結果、うまくいったものを紹介します。

問題

筆者の環境
・CDNでVue.jsを導入
・PHPファイルで、HTMLを記述
・Vue.jsのv-forディレクティブで、PHPの連想配列を出力したくなった

解決方法

PHP標準の、json_encode関数を用いることです。
PHPの連想配列そのままでは、Vue.jsで出力することができません。
実例

index.php

<?php $dataArray = array(
  array(
    "id" => 1,
    "name" => 'John'
    "age" => '15'
  ),
  array(
    "id" => 2,
    "name" => 'Mary'
    "age" => '15'
  ),
  array(
    "id" => 3,
    "name" => 'Tom'
    "age" => '16'
  ),
  
);
?>

<!DOCTYPE html>
<html>
<head>
 <!-- Vue.jsをCDNで読み込み -->
</head>
<body>
<div id="app">
    <ul class="list" v-for="(data,index) in dataArray :key=index">
        <li>{{ data.id }}</li>
        <li>{{ data.name }}</li>
        <li>{{ data.age }}</li>
    </ul>
</div>


<script>
const app = Vue.createApp({
  data() {
    return {
      // json_encode()を用いて、PHPの配列をJSON形式に変更する
      dataArray: <?php echo json_encode($dataArray); ?> 
      // ↓ダメな例。値が出力されない。Chromeのdevモードで見ると、Arrayとだけ出力される↓
      // dataArray: <?php echo $dataArray; ?> 
      
    }
  },
})

app.mount('#app')


</script>
</body>
</html>


おわりに

echoでいけるんや、ふーん余裕やん:yum:と思ってから、JSON形式にする手順に気付かずしばらく悪戦苦闘しました。
知ってしまえばなんてことはない話ですが、誰かの助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0