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

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

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

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

Q&A

解決済

2回答

2026閲覧

配列同士を結合させ、添字がある配列に寄せる方法について

igaiga

総合スコア144

PHP

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

0グッド

0クリップ

投稿2017/03/02 09:44

編集2017/03/03 05:10

配列同士を結合させたいのですが、思ったようになりませんでした。
$aの添字は残しつつ、マージさせたいのですが、array_mergeだと添字を振り直されますし、下記のようにするとマージされません。

希望としては、下記の期待する配列の値のようにしたく思います。
ご教示頂ければ幸いです。

###ソースコード

$a = Array(4301=>ピアース東京インプレイス,4302=>クラリティアスール,4303=>KACHIDOKITHETOWER); $b = Array('ピアース東京インプレイス' ,'クラリティアスール' ,'勝どきザタワー'); print_r($a+$b);

###期待する配列の値

Array(4301=>ピアース東京インプレイス,4302=>クラリティアスール,4303=>KACHIDOKITHETOWER,0=>勝どきザタワー);

###ご回答頂いたお二人の内容を参考にしたコード

<?php header("Content-Type: text/html; charset=UTF-8"); $array1 = Array( 4301 => "ピアース東京インプレイス", 4302 => "クラリティアスール", 4303 => "KACHIDOKITHETOWER" ); $array2 = Array( "ピアース東京インプレイス", "クラリティアスール", "勝どきザタワー" ); $unique_value = array_merge(array_diff($array2, $array1)); $i=0; $result_array = array(); foreach ($unique_value as $value) { $result_array += array('000_'.$i =>$value); $i++; } $result = $array1 + $result_array; print_r($result); ?>

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

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

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

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

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

seastar3

2017/03/02 10:19

$b配列で$a配列にないものが複数ある場合には、添字(キー)はどのようなルールで振るのでしょうか。
igaiga

2017/03/03 04:28

ありがとうございます!よく考えたら数字だけで既存添字ありか、なしか判別する必要があるので頭にnewとか判別できる方法が必要ですね
guest

回答2

0

ベストアンサー

このような挙動でしょうか?

HTML

1<?php 2$array1 = Array( 3 4301 => "ピアース東京インプレイス", 4 4302 => "クラリティアスール", 5 4303 => "KACHIDOKITHETOWER" 6); 7$array2 = Array( 8 "ピアース東京インプレイス", 9 "クラリティアスール", 10 "勝どきザタワー" 11); 12$unique_value = array_merge(array_diff($array2, $array1)); 13$result = $array1 + $unique_value; 14var_dump($result);

投稿2017/03/02 10:16

s8_chu

総合スコア14731

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

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

igaiga

2017/03/03 04:45

ありがとうございます!$unique_valueに添字を指定したい場合はどうすればよいでしょうか?
igaiga

2017/03/03 04:59

seastar3さんのを参考にするとforeachで添字を振り直せば良いんですね。
guest

0

キーの設定があいまいな状況でのコード例です。

php

1// 共通する項目を抽出する。 2$result_array = array_intersect($a, $b); 3 4// 共通してなくて、追加すべき項目をただの配列に抽出する。 5$different_array = array_diff($b, $a); 6 7// 共通していない項目にキーを振りつつ、連想配列に追加する。 8// キーの重複を検査する例外処理が必要かも知れない。 9foreach ($different_array as $ary) { 10 $result_array += array('000_'.$ary =>$ary); 11} 12 13print_r($result_array);

投稿2017/03/02 10:47

編集2017/03/04 01:20
seastar3

総合スコア2285

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

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

igaiga

2017/03/03 04:54

ありがとうございます。試してみましたが下記のようになり、KACHIDOKITHETOWERがきえてしまいました。それ以外は新規の添字を指定できるしイメージどおりです。あと参考にする人用に補足するとarray_defは、array_diffの打ち間違いであろうということで変更しています。 Array ( [4301] => ピアース東京インプレイス [4302] => クラリティアスール [000_勝どきザタワー] => 勝どきザタワー )
seastar3

2017/03/04 01:22

igaigaさん、うまくいったようで、よかったですね。 私の回答コードもdiff()関数に訂正しました。間違えて済みません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問