質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3530閲覧

多次元配列と多次元配列の要素の比較

tixure55

総合スコア400

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/01/17 13:49

編集2016/01/17 14:34

いつもお世話になります、多次元配列の要素同士を比較して、多次元配列Aに多次元配列Bの要素がふくまれていなければ,多次元配列Aに多次元配列Bの要素を追加したいのですが、どのように書けば良いでしょうか。

php

1<?php 2 3 $arr = array( 4 '80' => array( 5 '0' => array( 6 'a_id' => '7', 7 'c_id' => '0' 8 ), 9 '1' => array( 10 'a_id' => '8', 11 'c_id' => '1' 12 ), 13 ), 14 '81' => array( 15 '0' => array(_ 16 'a_id' => '2', 17 'c_id' => '0' 18 ), 19 '1' => array( 20 'a_id' => '8', 21 'c_id' => '1' 22 ), 23 ), 24 ); 25 26$address_arr = array( 27'0' => array( 28'a_id' => '0', 29'name' => 'masaru' 30), 31'1' => array( 32'a_id' => '1', 33'name' => 'yuki' 34) 35); 36 37foreach($arr as $value){ 38 foreach($value as $vale){ 39 for($i = 0; $i < 1; $i++){ 40 if(!in_array($address_arr[$i]['a_id'],$vale)){ 41 array_push($arr['group_id'][$i] , $address_arr[$i]['a_id']); 42 } 43 } 44 } 45} 46

上記ソースはarray_pushのエラーになります。できれば、push後、c_idも採番して、a_idの昇順に並べ替えたいです。

[追記]
早急な回答ありがとうございます、作りたい配列は以下のとおりです。

php

1 2<?php 3$arr = array( 4 '80' => array( 5 '0' => array( 6 'a_id' => '0', 7 'c_id' => '0' 8 ), 9 '1' => array( 10 'a_id' => '7', 11 'c_id' => '1' 12 ), 13 '2' => array( 14 'a_id' => '8', 15 'c_id' => '2' 16 ), 17 '81' => array( 18 '0' => array( 19 'a_id' => '0', 20 'c_id' => '0' 21 ), 22 '1' => array( 23 'a_id' => '2', 24 'c_id' => '1' 25 ), 26 '2' => array( 27 'a_id' => '8', 28 'c_id' => '2' 29 ), 30 ), 31); 32

$address_arrの中のa_idが$arrの中の各々のグループのalias_idの中に含まれているかどうかチェックしていくイメージです。

[追記2]
すいません、$arr_addressの1の方入れ忘れてました。
単に書き忘れです。すいません。要は入ってないやつをpushした配列を作りたいということです。

php

1 2<?php 3$arr = array( 4 '80' => array( 5 '0' => array( 6 'a_id' => '0', 7 'c_id' => '0' 8 ), 9 '1' => array( 10 'a_id' => '1', 11 'c_id' => '1' 12 ), 13 '2' => array( 14 'a_id' => '7', 15 'c_id' => '2' 16 ), 17 '3' => array( 18 'a_id' => '8', 19 'c_id' => '3' 20 ), 21 '81' => array( 22 '0' => array( 23 'a_id' => '0', 24 'c_id' => '0' 25 ), 26 '1' => array( 27 'a_id' => '1', 28 'c_id' => '1' 29 ), 30 '2' => array( 31 'a_id' => '2', 32 'c_id' => '2' 33 ), 34 '3' => array( 35 'a_id' => '8', 36 'c_id' => '3' 37 ), 38 ), 39); 40

上記のとおりの作りたいです。何度もすいません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/01/17 14:05 編集

質問文の内容からは、想定されるケースが複数思い浮かびますので、「多次元配列Aに多次元配列Bの要素がふくまれていなければ,多次元配列Aに多次元配列Bの要素を追加したい」が明確に分かる例を挙げ、最終的にどのような配列にしたいのかを具体的に例示してください。
退会済みユーザー

退会済みユーザー

2016/01/17 14:20

補足見てもごめんなさい、意図が読み取れません。80, 81 の先頭に array(0, 0) が追加されていますけど、$address_arr に 0を値に持っているのは1個でもう一つは1。1を値に持つものが行方不明… そもそもこのコードは何かのために必要になる処理なんですかね…この処理を書くこと自体が目的ならいいんですけど、このコードが何か別の処理に利用されるためのものであるなら、別のアプローチを探したほうがいいかもしれませんよ。
退会済みユーザー

退会済みユーザー

2016/01/17 14:31 編集

入れ忘れと言われても、いったいどっちに入れたいのだか…やりたいことを明確に言語化(日本語)でできていないことがコードをかけない原因のような気がしますよ。
guest

回答1

0

ベストアンサー

配列に何かを加える関数は以下のようなものがある。
配列 関数

配列を何かの処理で扱いたい場合は、上記のリファレンスページを必ず読んでください。「こんな関数あったよなー」と思い出せる程度には暗記すべき。

array_unshift
array_unshift — 一つ以上の要素を配列の最初に加える

array_push
array_push — 一つ以上の要素を配列の最後に追加する

array_merge
array_merge — ひとつまたは複数の配列をマージする

以下のような書き方も可能
$arr = $arr2 + $arr3;

php

1$arr = array( 2 '80' => array( 3 '0' => array( 4 'a_id' => '7', 5 'c_id' => '0' 6 ), 7 '1' => array( 8 'a_id' => '8', 9 'c_id' => '1' 10 ), 11 ), 12 '81' => array( 13 '0' => array( 14 'a_id' => '2', 15 'c_id' => '0' 16 ), 17 '1' => array( 18 'a_id' => '8', 19 'c_id' => '1' 20 ), 21 ), 22); 23 24$address_arr = array( 25 '0' => array( 26 'a_id' => '0', 27 'name' => 'masaru' 28 ), 29 '1' => array( 30 'a_id' => '1', 31 'name' => 'yuki' 32 ) 33); 34 35$arr2 = []; 36foreach ($address_arr as $key => $add) { 37 $arr2[] = ['a_id' => $add['a_id']]; 38} 39foreach ($arr as $key => $val) { 40 $arr[$key] = array_merge($arr2, $val); 41} 42foreach ($arr as $key => $val) { 43 $i = 0; 44 foreach ($val as $k => $v) { 45 $arr[$key][$k] = [ 46 'a_id' => $v['a_id'] 47 , 'c_id' => (string) $i++ 48 ]; 49 } 50} 51var_dump($arr);

投稿2016/01/17 14:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tixure55

2016/01/17 15:08

今日はありがとうございました。大変助かりました。リファレンスを再度読みなおして勉強しておきますので。
退会済みユーザー

退会済みユーザー

2016/01/17 15:12

はい。ではこの画面のスクリーンショットを撮っておきますねー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問