私は先に進み、あなたのためにクラスを作りました。基本的に、両方の配列をループして、両方の配列からのテキスト データのみを含む新しい配列を作成します。新しい配列を作成した後 (同じテキストの既存の配列データをチェック - 重複なし)、元の配列ごとにブール変数を設定し、一意のテキスト文字列の配列をループして、各配列のテキスト文字列をチェックします。元の配列のいずれかにテキストが見つかった場合、対応する元の配列のブール値を変更します。2 つのブール変数の値をテストし、それに応じて新しい $socialArr 値を設定します。これが理にかなっていることを願っています。コードはテスト済みで動作します。
<?php
class socialArray {
public function init($twitter,$facebook){
$this->combinedText = $this->combinedTextArr($twitter,$facebook);
$this->socialArr = $this->makeSocialArr($twitter,$facebook);
return $this->socialArr;
}
public function combinedTextArr($twitter,$facebook){
$combinedText = array();
foreach($twitter as $key => $value){
if( !in_array($value["text"],$combinedText ) ){
$combinedText[] = $value["text"];
}
}
foreach($facebook as $key => $value){
if( !in_array($value["text"],$combinedText ) ){
$combinedText[] = $value["text"];
}
}
return $combinedText;
}
public function makeSocialArr($twitter,$facebook){
$socialArr = array();
foreach($this->combinedText as $value){
$twitterTest = false;
$facebookTest = false;
foreach($twitter as $var){
if( $var["text"] == $value) {
$twitterTest = true;
}
}
foreach($facebook as $var){
if( $var["text"] == $value ) {
$facebookTest = true;
}
}
if( $twitterTest === true && $facebookTest === false ) {
$socialArr[] = array(
'text' => $value,
'type' => 'twitter'
);
} else if ( $twitterTest === false && $facebookTest === true ) {
$socialArr[] = array(
'text' => $value,
'type' => 'facebook'
);
} else if ( $twitterTest === true && $facebookTest === true ) {
$socialArr[] = array(
'text' => $value,
'type' => 'both'
);
}
}
return $socialArr;
}
}
$facebook = array();
$facebook[] = array(
"text" => "A post on facebook with text and stuff",
"type" => "facebook"
);
$facebook[] = array(
"text" => "This occurs in both arrays",
"type" => "facebook"
);
$twitter = array();
$twitter[] = array(
"text" => "A tweet of the utmost importance",
"type" => "twitter"
);
$twitter[] = array(
"text" => "This occurs in both arrays",
"type" => "twitter"
);
$socArrMaker = new socialArray();
$socialArr = $socArrMaker->init($twitter,$facebook);
echo "<html><head><style type=\"text/css\">body{ font-family: sans-serif; }</style></head><body><pre>\r\n";
print_r($socialArr);
echo "</pre></body></html>\r\n";
...を生成する
Array
(
[0] => Array
(
[text] => A tweet of the utmost importance
[type] => twitter
)
[1] => Array
(
[text] => This occurs in both arrays
[type] => both
)
[2] => Array
(
[text] => A post on facebook with text and stuff
[type] => facebook
)
)