我想反向数组没有任何PHP功能?

时间:2017-09-27 08:38:54

标签: php arrays

我尝试过类似的东西,但它给了我价值。我需要再次在数组中反转所有元素。

 <?php
//There is an array 
  echo '<pre>';
  $arr = ['a','b','c','d','e','f'];
  print_r($arr);
  $size = sizeof($arr);
 //print_r($size);

 for($i=5; $i<=$size; $i--)
 {
  echo $arr[$i];
 }

?>

但它给了我输出“fedcba”      我需要这样["f", "e", "d", "c", "b", "a"]      在不使用任何PHP数组函数和任何其他新变量的情况下反转其所有元素。

7 个答案:

答案 0 :(得分:3)

扩展Hanky Panky的答案如果您不需要任何其他元素,那么您可以取消设置以前的数组值。

    <?php
    $arr = ['a','b','c','d','e','f'];

    for($i=count($arr)-1;$i>=0;$i--){
    $arr[]=$arr[$i];
    unset($arr[$i]);
    }
    print_r($arr);
   //Additionaly you can use array_values to reindex your array from 0
    print_r(array_values($arr));
    ?>

小提琴是Check here

答案 1 :(得分:0)

//使用此

$arr = ['a','b','c','d','e','f'];

$size = sizeof($arr);
    $res=array();
  for($i=$size-1; $i>=0; $i--){
       $res[]= $arr[$i];
  }

print_r($res);

答案 2 :(得分:0)

这使用与代码相同数量的变量,意思是$ arr,$ size和$ i。

$arr = ['a','b','c','d','e','f'];

$size = count($arr);
for($i=$size-1;$i>=0;$i--){
    $arr[$size] = $arr[$i];
    unset($arr[$i]);
    $size++;
}

var_dump($arr);

https://3v4l.org/mEHJU

它创建:

array(6) {
      [6]=>
      string(1) "f"
      [7]=>
      string(1) "e"
      [8]=>
      string(1) "d"
      [9]=>
      string(1) "c"
      [10]=>
      string(1) "b"
      [11]=>
      string(1) "a"
}

键不是0,但可以使用array_values进行纠正,还是需要在没有该函数的情况下进行纠正?

答案 3 :(得分:0)

在你的for循环中,你有$ i&lt; = $ size,不应该是$ i&gt; = 0?其次,您可以在没有任何额外功能的情况下反转数组,但由于您使用的是$ size变量,我希望您可以使用另一个变量$ temp进行交换。以下是示例代码:

//original array
$arr = ['a','b','c','d','e','f'];
print_r($arr);
$size = sizeof($arr);

for($i=0; $i<$size; $i++)
{
     $temp=$arr[$i];
     $arr[$i]=$arr[$size-1];
     $arr[$size-1]=$temp;
     $size--;

}
//reversed array
print_r ($arr);

答案 4 :(得分:0)

这是使用与你的相同变量名称和使用交换方法的另一个解决方案,(在这里你可以假设$ i作为索引从左边,$ size作为索引从右边。

$arr = ['a','b','c','d','e','f'];
print_r($arr);
$i=0;

while ($i < sizeof($arr)/2){
    $size=$arr[$i];
    $arr[$i]=$arr[sizeof($arr)-1-$i];
    $arr[sizeof($arr)-1-$i]=$size;  
    $i=$i+1;
}

//reversed array
print_r ($arr);

答案 5 :(得分:0)

      <?php
   $arr = ['a','b','c','d','e','f'];
   print_r($arr);
   $size = sizeof($arr);
  for($i=5; $i<=$size; $i--)
  {
    if($i==$size-1)
     {
     echo '['.'"'.$arr[$i].'"',',';
     }
    if($i<$size && $i!=5 && $i>0)
     {
    echo '"'.$arr[$i].'"'.','; 
     }
    if($i==0)
     {
    echo '"'.$arr[$i].'"'.']'; 
     }
 }
  ?>//hope this helps you....

答案 6 :(得分:-1)

好的,这是我的最后一次尝试

$array = ['a','b','c','d','e','f'];
$count = count($array);
for($i = 0; $i < $count/2; $i++){
  $array[$i] ^= $array[$count-$i-1] ^= $array[$i] ^= $array[$count-$i-1];
}

它基于Is there a PHP function for swapping the values of two variables?

如果您甚至无法使用count(),则可以执行简单的foreach循环

$count = 0;
foreach($array as $one)
 $count++;