PHP array questions found online, prepare to do it yourself and record it.
1. Write a function to create an array with a length of 10. The elements in the array are increasing odd numbers, and the first item is 1.
Copy code The code is as follows:
function arrsort($first,$length){
$arr = array();
for($i=$first;$i<=$length;$i ){
$arr[] = $i*2-1;
}
return $arr;
}
$arr1 = arrsort(1,10);
Print_r($arr1);
Output:
Copy code The code is as follows:
Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 [5] => 11 [6] => 13 [7] => 15 [8] => 17 [9] => 19 )
2. Create an array with a length of 10. The numbers in the array are increasing geometric numbers, the ratio is 3, and the first item is 1.
Copy code The code is as follows:
//$num is the ratio
Function arrsort($first,$length,$num){
$arr= array();
for($i=$first;$i<=$length;$i){
//pow($num,$i-2); returns $num raised to the ($i-2) power
$arr[] = $num*pow($num,$i-2);
}
return $arr;
Print_r($arr1);
Copy code The code is as follows:
Array ( [0] => 1 [1] => 3 [2] => 9 [3] => 27 [4] => 81 [5] => 243 [6] => 729 [7] => 2187 [8] => 6561 [9] => 19683 )
3. Find the subscript of the largest number in the array.
Copy code The code is as follows:
function maxkey($arr){
foreach($arr as $key=>$val){
If($maxval == $val){
$maxkey = $key;
}
}
Return $maxkey;
}
echo maxkey($arr);
Copy code The code is as follows:
b
4. Create an array with a length of 10. The elements in the array satisfy the rules of the Fibonacci sequence.
Copy code The code is as follows:
$arr[0] = 0;
$arr[1] = 1;
for($i=2;$i<$len;$i ){
$arr[$i] = $arr[$i-1] $arr[$i-2];
}
Return $arr;
}
";</p> <p> print_r(arrFibo(10));<br> echo "";
Copy code The code is as follows:
Array
(
[0] => 0
[1] => 1
[2] => 1
[3] => 2
[4] => 3
[5] => 5
[6] => 8
[7] => 13
[8] => 21
[9] => 34
)
5. Calculate the difference between the largest number and the smallest number in the array.
①max/min
Output:
Copy code The code is as follows:
102
②sort sorts the elements from small to large/rsort sorts the elements from large to small
Copy code The code is as follows:
function arrsub($arr){
sort($arr);
$min = $arr[0];
rsort($arr);
$max = $arr[0];
$sub = $max - $min;
return $sub;
}
$arr = array(-1,-2,100);
echo arrsub($arr);
Output:
102
6. Write a method to directly intercept the last 5 items of an array with a length of more than 10, and change the order into the first 5 items, such as {1,2,3,4,5,6,7,8,9 ,10} becomes {6,7,8,9,10,1,2,3,4,5}.
Idea: First cut the array to the corresponding length (array_slice), and then splice the two arrays (array_merge)
Copy code The code is as follows:
function arrsort($arr){
$num = count($arr);
if($num > 10){
//array_slice($arr, starting position, interception length, retained index (default is false))
$arr_firstpart = array_slice($arr,0,$num-5,true);
$arr_lastpart = array_slice($arr,($num-5),5,true);
}else{
echo "The array does not exceed 10 elements, please re-enter";
exit();
}
//Splicing
$arr_new = array_merge($arr_lastpart,$arr_firstpart);
return $arr_new;
}
$arr = array("a"=>1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);
echo "
";</p> <p>print_r($arr);</p> <p>echo "<br>= = = = = After splicing = = = = <br><br>";</p> <p>print_r(arrsort($arr));</p> <p>echo "";
Output:
Copy code The code is as follows:
Array
(
[a] => 1
[0] => 2
[1] => 3
[2] => 8
[3] => 9
[4] => 6
[b] => 5
[5] => -1
[c] => 8
[6] => 0
[7] => 7
)
= = = = = After splicing = = = =
Copy code The code is as follows:
Array
(
[b] => 5
[0] => -1
[c] => 8
[1] => 0
[2] => 7
[a] => 1
[3] => 2
[4] => 3
[5] => 8
[6] => 9
[7] => 6
)
When the array does not meet the length of 10:
Copy code The code is as follows:
$arr = array("a"=>1,2,3);
Output:
Copy code The code is as follows:
Array
(
[a] => 1
[0] => 2
[1] => 3
)
= = = = = After splicing = = = =
The array does not exceed 10 elements, please re-enter
7. Concatenate the two arrays into a new array.
Method ① Use array_merge() function
Copy code The code is as follows:
array_merge($arr1,$arr2);
Method ② Use the array_merge_recursive() function to recursively append the array
( The array_merge_recursive() function, like the array_merge() function, merges the elements of one or more arrays. The values in one array are appended to the previous array. And returns the resulting array.
However, unlike array_merge(), when there are duplicate key names, the value will not be overwritten, but multiple values with the same key name will be recursively formed into an array. )
Copy code The code is as follows:
$arr = array("a"=>1,"b"=>2,3);
$arr2 = array("a"=>Dee,3,5);
$arr3 = array_merge($arr,$arr2);
$arr4 = array_merge_recursive($arr,$arr2);
echo "
";<br> Print_r($arr3);</p> <p> echo "<br> = = = = = <br><br>";</p> <p> print_r($arr4);<br> echo "";
Output:
Copy code The code is as follows:
Array
(
[a] => Dee
[b] => 2
[0] => 3
[1] => 3
[2] => 5
)
= = = = =
Copy code The code is as follows:
Array
(
[a] => Array
(
[0] => 1
[1] =>
)
[0] => 3
[1] => 3
[2] => 5
)
Method ③
Copy code The code is as follows:
$arr_new = $arr1;
foreach($arr2 as $key=>$val){
$arr_new[] = $val;
}
}
$arr2 = array("a"=>Dee,"c"=>3,5);
";<p> print_r(arrsort($arr1,$arr2));<br> echo "";
Copy code The code is as follows:
Array
(
[a] => 1
[b] => 2
[0] => 3
[1] => Dee
[2] => 3
[3] => 5
)
If it is an indexed array and there is a duplicate index, the duplicate index in the second array will be modified to a new index.
8. Array reverse order (rsort function cannot be used, new array cannot be generated)
Using the array_reverse() function will create a new array, so it cannot be used.
Copy code The code is as follows:
$i = "";//The subscript of the number to be replaced
$j = "";//Temporary variable
$k = "";//The subscript of the number to be replaced
$half_len = floor($len/2);//Round down, the rounded value is the number of loops
$j = $arr[$i];
//Judge the odd or even number of arrays
If($len%2!=0){ //Odd number
$k = $half_len*2-$i;
}else{
//Even number
$k = $half_len*2-$i-1;
}
$arr[$k] = $j;
}
";<p> print_r($arr);<br> echo "";