{
"array": [
{
"test1": 1,
"test2": 2,
"test3": 3,
"img_path": "img/img_name1.png"
},
{
"test1": 2,
"test2": 2,
"test3": 2,
"img_path": "img/img_name2.png"
}
]
}
上記の様な形式のjsonファイルをphpでデコードしてController側でshuffle関数を使いたいのですが
shuffle() expects parameter 1 to be array, null given in C:\~というエラーが出てしまいます。
指定の仕方が間違っていると思うのですが、どのように書いたらよろしいでしょうか?
現状このように書いてしまっています。 ↓
$img_path = shuffle($test_json_array['img_path']);
$test_jsonという変数名でデコードしています。
ご教授頂けましたら幸いです。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
PHP
1$img_path = shuffle($test_json['array'])[0]['img_path'];
では?
上記コードが正しいかは自信がありませんが、shuffle()は引数に配列を与えて使います。
PHP
1$img_path = shuffle($test_json_array['img_path']);
ではshuffle()に未定義の配列$test_json_arrayの「img_path」という名前の要素を渡しており、nullが入っています。
投稿2015/08/28 04:08
総合スコア1698
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/28 05:57
0
ベストアンサー
こういうことでしょうか?
php
1$shuffled_array = $test_json['array']; 2shuffle($shuffled_array); 3$img_path = $shuffled_array[0]['img_path'];
ただし、上記のように配列をランダムに並び替えるよりは次のように配列の添字の方を乱数化した方が効率が良いように思います。
php
1$index = rand(0, count($test_json['array']) - 1); 2$img_path = $test_json['array'][$index]['img_path'];
投稿2015/08/28 04:05
編集2015/08/28 05:51総合スコア594
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/28 05:42
2015/08/28 05:55
2015/08/28 06:52
2015/08/28 07:09 編集
2015/08/28 08:05
2015/08/28 08:27
2015/08/28 09:04 編集
2015/08/28 10:23
2015/08/31 03:31
2015/08/31 04:10
2015/08/31 04:44
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。