我尝试过类似的东西,但它给了我价值。我需要再次在数组中反转所有元素。
<?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数组函数和任何其他新变量的情况下反转其所有元素。
答案 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);
它创建:
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++;