2012-02-27 27 views
0

有没有一种方法可以切换以找出不包含在关联数组集合内的数字?切换数字不包含在关联数组中的PHP

因此,如果数据是

[options] => Array 
       (
        [1] => locality 
        [2] => postcode 
        [3] => dwelling_type 
        [4] => typical_value 
        [5] => dsr 
        [6] => dsr_summary 
        [13] => yield 
        [15] => search_dsr 
        [16] => sr 
        [17] => month 
        [18] => year 
       ) 

我如何获得的7,8,9,10,11,12,14输出programmically如果总数是18?

解决:

其实我最后的答案是

$existingKeys = array_keys($options['User']['options']); 
$Keys = range(0,18); 
$missingKeys = array_diff($Keys,$existingKeys); 

回答

3
$existingKeys = array_keys($myArray['options']); 
$minMaxrange = range(min($existingKeys),max($existingKeys)); 
$missingKeys = array_diff($minMaxrange,$existingKeys); 
+0

对不起队友接近,但我想从另一个数组是[1,2,3,4,5获得,6,7,8,9,10,11,12,13,14,15,16,17,18] – 2012-02-27 09:58:26

+0

对不起,我不明白。你要求输出[7,8,9,10,11,12,14] ... $ missingKeys给你。如果你想得到[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]的输出,那么$ minMaxrange给你。如果您担心选项18可能会丢失,请修改$ minMaxrange的定义...请查看代码并了解其工作原理。 – 2012-02-27 10:01:04

+0

我认为你是对的。对不起,我应该更好地解释。我在最后工作了!谢谢你的帮助我从你那里得到了这个想法。 $ existingKeys = array_keys($ options ['User'] ['options']); \t \t \t \t \t $ Keys = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18); \t \t \t \t \t $ missingKeys = array_diff($ Keys,$ existingKeys); – 2012-02-27 10:12:30

0
<?php 

    $options = array(0=>"zero", 2=>"two", 4=>"four", 8=>"height"); 
    $optionsKeys = array_keys($options); 

    $optionsMissingKeys = array(); 

    for ($i=0 ; $i < $optionsKeys[count($optionsKeys)-1] ; $i++) { 

     if (in_array($i, $optionsKeys) == FALSE) 
      array_push($optionsMissingKeys, $i); 
    } 

    print_r($optionsMissingKeys); 
+0

@JohnKim应该在你的情况下工作,对不起,我做了很多修改我的答案,这是最终结果 – user544262772 2012-02-27 10:08:39