Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 寻找输出结果匹配值的更好方法?_Php_Arrays - Fatal编程技术网

Php 寻找输出结果匹配值的更好方法?

Php 寻找输出结果匹配值的更好方法?,php,arrays,Php,Arrays,我有几个名字需要检查,具体取决于与它们相关联的号码。现在,我可以通过以下方法完成这项任务 $detectInspector = array(); $detectInspector[558]="Name"; $detectInspector[559]="OtherName"; $detectInspector[560]="Someone"; echo $detectInspector[558]; 问题是我有成百上千的这些我必须打印出来。有没有更简单的方法来做类似的事情 476 through

我有几个名字需要检查,具体取决于与它们相关联的号码。现在,我可以通过以下方法完成这项任务

$detectInspector = array();
$detectInspector[558]="Name";
$detectInspector[559]="OtherName";
$detectInspector[560]="Someone";

echo $detectInspector[558];
问题是我有成百上千的这些我必须打印出来。有没有更简单的方法来做类似的事情

476 through 490 = name
518 through 530 = name
558 through 569 = othername
598 though 609 = othername
650 through 655 = someoneelse
690 through 695 = someoneelse
要解释代码的工作原理,请执行以下操作:

  • 从数据库中提取数字
  • 对照名单核对号码,看谁的名字 火柴
  • 回波结果

  • 您可以尝试以下方法:

    首先,将您的姓名存储在一个多维数组中,该数组包含一个姓名条目和一个包含姓名范围的数组。显然,如果数字在每个范围的最小值和最大值之间,则将设置名称

        $ranges = [
            [
                'name' => 'Jhon',
                'ranges' => [
                    [1,50],
                    [120,200],
                    [401,409]
                ]
            ],
            [
                'name' => 'Jack',
                'ranges' => [
                    [20,25],
                    [210,230],
                ],
            ],
            [
                'name' => 'Bill',
                'ranges' => [
                    [245,270],
                    [301,350],
                ],
            ],
            [
                'name' => 'Steve',
                'ranges' => [
                    [271,275],
                ],
            ],
        ];
    
        $names = [];
        foreach ($ranges as $nameProps) {
            foreach ($nameProps['ranges'] as $range) {
                list($min, $max) = $range;
                $names[] = [
                    'name' => $nameProps['name'],
                    'min' => $min,
                    'max' => $max,
                ];
            }
        }
    
    然后,假设您从db获得$nb变量:

        $nb = 999;
        $detectInspector = [];
    
    
        for ($i = 1; $i <= $nb; $i++) {
            $name = '';
            foreach ($names as $k => $nameProps) {
                if ($i >= $nameProps['min'] && $i <= $nameProps['max']) {
                    $name .= ($name ? ' | ' : '') . $nameProps['name'];
                }
            }
    
            if ($name != '') {
                $detectInspector[$i] = $name;
            }
        }
    

    您必须手动为每个号码指定一个名称?是的,每个号码都与一个特定的名称相关联。唯一的问题是558-569是一个人,570-581是其他人。然后598-609返回到第一个,610-621是另一个。我想我可以设置最小值和最大值,而不是像上面那样键入每个数字。谢谢!这正是我想要的
    var_dump($detectInspector);