2013-09-13 3 views
0

Как получить индекс массива для данного положительного значения или 1 ниже - это мой массив.Индекс поиска в массиве для заданного значения

Array([0] => stdClass Object 
    ([result] =>) 

[1] => stdClass Object 
    ([result] => 1) 

[2] => stdClass Object 
    ([result] =>) 

[3] => stdClass Object 
    ([result] =>) 

[4] => stdClass Object 
    ([result] =>) 

[5] => stdClass Object 
    ([result] =>) 

[6] => stdClass Object 
    ([result] => 1) 
) 

Полученный результат массив был родом из этой функции, что он делает, должно было подтвердить адрес электронной почты, представленный PQ, и если адрес электронной почты является действительным, и зарегистрирован он будет возвращать 1 или правда, теперь мне нужно изолировать этот действительный и зарегистрированный адрес электронной почты, поскольку мне нужно отправить приглашение на остальные электронные письма.

function get_email_verification(){ 
     $api_request_url = "http://api.payquicker.com/api/IsActiveAccount"; 
     foreach ($this->get_payquicker_emails() as $email) { 
       $param = "email=".$email; 
       $result_request[] = $this->do_request($api_request_url, $param, 'GET', 'json'); 

     } 
     if (empty($result_request)) { 
      echo "All payee emails are already registered to Payquicker"; 
     } 
     return $result_request; 
     } 
+0

Я не совсем понимаю вопрос. Каков желаемый результат для этого массива? –

+0

@ George Brighton Мне нужно найти индекс массива, значение которого больше нуля. –

+0

Другими словами 1 и 6 будут возвращены этим алгоритмом поиска? –

ответ

0

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

DEMO здесь: http://codepad.org/Hk5ufuG8

$data = Array(); 
$data[0] = (object)Array("result" => ''); 
$data[1] = (object)Array("result" => 1); 
$data[2] = (object)Array("result" => ''); 
$data[3] = (object)Array("result" => ''); 
$data[4] = (object)Array("result" => ''); 
$data[5] = (object)Array("result" => ''); 
$data[6] = (object)Array("result" => 1); 

function searchArray($array) 
{ 
    $our_keys = array(); 
    foreach($array as $key => $obj) 
    { 
     if($obj->result > 0) 
     { 
      $our_keys[] = $key; 

     } 
    } 
    return $our_keys; 
} 

$keys = searchArray($data); 
print_r($keys); 

UPDATE - Попробуйте это для get_email_verification (). Он хранит электронные письма в массиве с именем $ emails, обрабатывает их по-прежнему, но вместо того, чтобы возвращать вышеприведенный массив, мы продолжаем и вызываем searchArray(), а затем обрабатываем результаты по массиву $ emails и возвращаем этот список.

+0

ok Спасибо, попробуйте ваше предложение –

+0

Мне нужно сначала преобразовать массив возврата? –

+0

Функция возвращает массив ключей, которые должны совпадать с соответствующими адресами электронной почты, которые были отправлены в PQ. Возможно, вам нужно будет сохранить адреса электронной почты в массиве, который вы можете ссылаться, прежде чем отправлять их в PQ –

0

В вашем массиве примеров показано несколько элементов с результатом результата> 1, поэтому я предполагаю, что вы хотите извлечь индекс всех этих элементов?

Вы можете пройти через массив, проверить, есть ли у каждого элемента результат> 0, если он добавляет его в новый массив.

$results = array(); 

foreach($your_array as $key=>$item) { 
    if($item['result'] > 0){ 
     $results[] = $key; 
    } 
} 

В результате для примера массива будет массив со значениями [1,6]

+0

спасибо alot ok Я попробую ваше предложение –

+0

Да, извините, я собирался сказать вам массив, в то время как ваш код показывает, что это объект. Вы должны использовать '$ item-> result' для доступа к информации. – Jeemusu

Смежные вопросы