首页 > 解决方案 > 如何基于函数内的foreach循环在php中编写if条件?

问题描述

我是这里的新手,请求帮助根据此函数的输出编写条件语句。

 $ID = '1234';
    
 $uc = array("example1.com", "example2.com", "example3.com");
    
 function ucQuery($ucarray, $ID){
    foreach ($ucarray as $value) {
        $host = $value;
        try{
            include('info.php');
            $response = $client->getUser(array("name" => ID))->return;
            print_r($response);
        }catch (Exception $e){
            echo "false";
        }
    }
    }
    
    ucQuery($uc, $ID);

info.php 对服务器进行了soapclient 调用并返回响应。当我运行它时,我看到打印在页面上的输出。因此,在 3 台服务器中,我希望它位于 1 台中,其余 2 台返回 false。一切工作到这里。

我基本上被困在如何推进这件事上。到目前为止的例子,

如果用户是从第一个 example1.com 服务器返回的,我应该运行另一个函数并说这个用户是从这个特定的服务器返回的。

如果用户没有从所有服务器返回,我应该打印一个错误。

非常感谢这里的任何帮助。非常感谢。

标签: php

解决方案


为什么不这样:

$ID = '1234';
    
$uc = array("example1.com", "example2.com", "example3.com");

function ucQuery($ucarray, $ID){
    $user_data_array=[];
    foreach ($ucarray as $value) {
        $host = $value;
        try{
            include('info.php');
            $response = $client->getUser(array("name" => ID))->return;
            print_r($response);
            $user_data_array[$value]=$response;
        }catch (Exception $e){
            echo "false";
        }
    }
    return $user_data_array;
}
    
$user_data_array = ucQuery($uc, $ID);

if (count($user_data_array) < count($uc)) {
    // not all servers responded OK
    // do whatever you need to
    echo "User '$ID' was not returned from all servers";
}

foreach ($user_data_array as $server => $response){
    another_function($ID, $server);
    echo "User '$ID' was returned from server $server";
}

在线尝试


推荐阅读