Проверка Cakephp, чтобы увидеть, есть ли два значения в массиве - PullRequest
0 голосов
/ 17 января 2010

Мне нужно разрешить участникам писать отзыв о жилье, только если они остановились в отеле и там member_id соответствует Auth-> user ('id').

На размещение / просмотр я передаю данные BookingRequests.

, который выглядит так

BookingRequest
  0
    member_id => 4
    accepted => 1
  1
    member_id => 5
    accepted => 0
  2
    member_id => 4
    accepted => 0

Как мне искать в массиве, чтобы разрешить только оставшимся людям добавлять отзыв?

Ответы [ 3 ]

0 голосов
/ 17 января 2010

Попробуйте это,

function search($array, $key, $value)
    {
        $results = array();

        if (is_array($array))
        {
            if ($array[$key] == $value)
                $results[] = $array;

            foreach ($array as $subarray)
                $results = array_merge($results, search($subarray, $key, $value));
        }

        return $results;
    }

    $array = array(
                  "member_id" => 4, array("accepted" => 11),
                  "member_id" => 5, array("accepted" => 02), 
                  "member_id" => 4, array("accepted" => 0)
                   );


    $stayedmember = search($array,$memberID,"accepted");

    print_r($stayedmember );
0 голосов
/ 17 января 2010

Предполагая, что «принято» определяет, остались ли они в гостинице или нет, и приведенный ниже тестовый массив действительно является форматом вашего массива данных, тогда вы можете использовать следующий код:

/* Test data */
$BookingRequestData = array(
    array('member_id' => 4, 'accepted' => 1),
    array('member_id' => 5, 'accepted' => 0),
    array('member_id' => 4, 'accepted' => 0)
);

$canAddReview = (count(Set::extract("/data[member_id=" . $this->Auth->user('id') . "][accepted=1]", array('data' => $BookingRequestData))) > 0);
0 голосов
/ 17 января 2010

Это не так просто в PHP на других языках, поэтому вам придется вводить другим способом.

Примерно так:

$vars = array();
foreach ($members as $request) {
  if ($request->accepted) {
    array_push($vars, $request);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...