2017-09-27 36 views
-3

我試過類似的東西,但它給了我價值。我需要再次在數組中反轉所有元素。我想反轉陣列沒有任何PHP功能?

<?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

什麼是你的函數返回 – Akintunde007

+0

首先蹦出來的數組元素,然後再次推到數組各個元素上以逆向格式 –

+0

你需要扭轉的陣列,或者可以在新的反向陣列被接受? – Andreas

回答

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

+0

'$ arr [] = $ arr [$ i];'在這一行是'$ arr'新的空白數組(新對象)? –

+2

它不創建新對象它將值分配給您的前一個數組。 $ arr不是新對象和空數組它是前一個數組的延續 –

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); 
+0

謝謝,但我不需要任何新的變量或任何新的數組來存儲前一個。 –

-1

OK嘗試

$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++; 
+2

「,而不使用任何PHP函數和任何其他變量」 – Andreas

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糾正或是否需要沒有這種功能加以糾正?

0

在你的循環,你有$ I < = $大小,應該不會是$ I> = 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); 
+1

使用交換方法添加了另一個答案,既不使用額外函數也不使用任何新變量。 – OWS

0

下面是使用相同的變量名和你使用互換方法,(也是在這裏你可以假設$我從左邊和$大小從右手食指指數

另一種解決方案。
$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); 
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....