$array_test = array("0"=>1,"1"=>1,"2"=>5,"3"=>1,"4"=>1,"5"=>3,"6"=>1,"7"=>2);
foreach ($array_test as $key => $value){
echo $key ."=>". $value."<br>";
}
echo "<br><br>";
$p = 1;  //定义你要删除的值
$i = 0;
$value_test = reset($array_test);
while ($value_test){
if ($value_test != $p){
$array_c[$i] = $value_test;  //生成新的数组
$i++;
}
$value_test = next($array_test);
}
foreach ($array_c as $key => $value){
echo $key ."=>". $value."<br>";
}

解决方案 »

  1.   

    <?php
    $array_test=array('0'=>1,'1'=>1,'2'=>5,'3'=>1,'4'=>1,'5'=>3,'6'=>1,'7'=>2);
    $array_test=preg_grep('/1/',$array_test,PREG_GREP_INVERT);print_r($array_test);//不重新索引
    print_r(array_values($array_test));//重新索引
    ?>
      

  2.   

    能不能讲一下PREG_GREP_INVERT是起了什么作用?
    手册上怎么没找到??
      

  3.   

    手册中:
    preg_grep
    (PHP 4, PHP 5)preg_grep --  返回与模式匹配的数组单元 
    说明
    array preg_grep ( string pattern, array input [, int flags] )preg_grep() 返回一个数组,其中包括了 input 数组中与给定的 pattern 模式相匹配的单元。 
    flags 可以是以下标记: 
    PREG_GREP_INVERT
    如果传递入此标记,preg_grep() 会返回输入数组中不匹配给定 pattern 的单元。本标记自 PHP 4.2.0 起可用。 
    自 PHP 4.0.4 起,preg_grep() 返回的结果使用从输入数组来的键名进行索引。如果不希望这样的结果,用 array_values() 对 preg_grep() 返回的结果重新索引。
      

  4.   

    是不是应该:把数据变成字符串,是不是有个join函数,我不知道。然后替换掉所有的 “1”,用不用正则表达式搂住自己做主,然后再把字符串变成数组,是不是有个split函数,我也不知道!大体思路是这样的
      

  5.   

    bool array_walk ( array &array, callback funcname [, mixed userdata] )
      

  6.   

    模拟一个数组
    $array_1 = array(1,1,5,1,1,3,1,2);
    $array_2 = array(1);
    print_r(array_diff($array_1,$array_2));然后重新建下索引