「if-part」を返す必要がある場合でも、私のコードは常に「else-part」に入ります。「else-part」を削除すると、「if-part」が返されます。
foreach ($messageRepo as $oMessage) {
$messageTag = $oMessage->getMessageTags(); // get tags from all messages
$storeTagsUnseri = unserialize($messageTag); // unserialize tags given by the user
$storeTagsUnseri = (array)($storeTagsUnseri);
if (array_intersect($messageTagsArray,$storeTagsUnseri)) { //if tags from user matches tags from DB messages
$messageToTag[] = $oMessage->getMessageText(); // get the message text from the DB message and store it in array
$messageCrdate[] = $oMessage->getCrdate();
$allMessagesArray = array_flip(array_combine($messageToTag,$messageCrdate));
return $allMessagesArray;
} else {
$allMessagesArray[] = "flummi";
return $allMessagesArray;
}
}
このコードは、array_intersect が true であっても、常に $allMessageArray 0 => "flummi" を返します。
おそらく if(array_intersect) はまったく不可能ですか?ある配列の何かが別の配列に一致するかどうかを確認する別の方法はありますか?
ご協力いただきありがとうございます!
編集
foreach ($messageRepo as $oMessage) {
$messageTag = $oMessage->getMessageTags(); // get tags from all messages
$storeTagsUnseri = unserialize($messageTag); // unserialize tags given by the user
$storeTagsUnseri = (array)($storeTagsUnseri);
if (array_intersect($messageTagsArray,$storeTagsUnseri)) { //if tags from user matches tags from DB messages
$messageToTag[] = $oMessage->getMessageText(); // get the message text from the DB message and store it in array
$messageCrdate[] = $oMessage->getCrdate();
$allMessagesArray = array_flip(array_combine($messageToTag,$messageCrdate));
}
}
if (!empty($allMessagesArray)) {
return $allMessagesArray;
} else {
return $allMessagesArray[] = "error";
}
}
これは現在動作しています...しかし、あまり良いコーディングではないと思います。^^