2015-08-24 3 views
2

Я начал изучать массивы, и они очень запутывают. Я хочу, чтобы генерировать 4 числа с помощью этого:Как найти первый, второй, третий и т. Д. Номер массива

$numbers = range(1,4); 

Тогда я перетасовать с этим:

shuffle($numbers); 

Теперь я хочу, чтобы каждый номер в качестве переменной, мне сказали, лучший способ это массивы , У меня есть этот код:

foreach($numbers as $number){ 

$test = array("first"=>"$number"); 
echo $test['first']; 

} 

Что это делает эхо все 4 номера вместе, как «3142» или «3241» и т.д., которые близки к тому, что я хочу, но мне нужно все 4 номера, чтобы иметь свои собственные переменная каждая. Таким образом, я сделал это:

foreach($numbers as $number){ 

$test =  array("first"=>"$number","second"=>"$number","third"=>"$number","fourth"=>"$number"); 
echo $test['first']," ",$test['second']," ",$test['third']," ",$test['fourth'],"  <br>"; 

} 

Это просто повторяет 4 числа 4 раза. Мне нужно «первым», чтобы быть первым номером, «вторым», чтобы быть вторым номером 4 и тем же для третьего и четвертого. Я искал в Интернете, но не знаю конкретно, что искать, чтобы найти ответ.

Если кто-то ответы они могли пожалуйста поместить так много деталей, в то, что некоторые функции делают, насколько это возможно, я хочу, чтобы узнать не только получить рабочий код :)

+0

Если вы пишете весь массив '$ test' вручную, вам даже не нужен цикл foreach. Просто напишите 'array (" first "=> $ numbers [0]," second "=> $ numbers [1] ...);'. Кроме того, в выражении echo замените ',' на '.', Потому что вы не можете объединить строки с ','. – treegarden

+0

@treegarden Извините, я понимаю, что последний бит, я всегда использовал запятые: S – Ben

ответ

1

Попробуйте это:

<?php 
$numbers = range(1,4); 
shuffle($numbers); 
$test = array(); 

foreach($numbers as $k=>$v){ 
    $test[$k] = $v; 
} 

echo "<pre>"; 
print_r($test); 
?> 

Это даст вам выход как:

Array 
(
    [0] => 3 
    [1] => 4 
    [2] => 2 
    [3] => 1 
) 

После того, что вы можете сделать:

$myvar["first"] = $test[0]; 
$myvar["second"] = $test[1]; 
$myvar["third"] = $test[2]; 
$myvar["fourth"] = $test[3]; 

Каждый массив имеет пару ключ, значение, если у вас есть массив сказать:

$myarr = array("a", "b", "c"); 

, то вы можете получить доступ к значению «а», как $myarr[0], "b" как $myarr[1] и так далее.

В цикле for я просматриваю массив с их ключом и значением, это не только даст вам ключ массива, но и значение, связанное с этим ключом.

More on Array

Edit: Улучшение, что Luthando Loot answered:

<?php 
$numbers = range(1,4);//generate four numbers 
shuffle($numbers);//shuffle them 

$test = array();//create array for the results 
$words = array("first", "second", "third", "fourth"); //create your array keys 
$i = 0; 
foreach($numbers as $number){ 
    $test[$words[$i]] = $number;//add your array keys & values 
    $i++; 
} 
echo "<pre>"; 
print_r($test); //show your results 
?> 

Выход:

Array 
(
    [first] => 4 
    [second] => 3 
    [third] => 2 
    [fourth] => 1 
) 
+0

Это прекрасно работает, спасибо. Не могли бы вы объяснить их немного больше, я не понимаю бит $ k => $ v и как пустые ссылки массива становятся цифрами: S – Ben

+0

@Ben см. Мой ответ для дополнительной информации и чтения :) –

+0

Спасибо Criesto, и эта ссылка намного лучше, чем W3schools, которые я использовал! – Ben

2

Вот полный код, попробуйте его

$numbers = range(1,4); //generate four numbers 
shuffle($numbers); //shuffle them 

$test = array(); //create array for the results 
$words = array("1st", "2nd", "3rd", "4th","5th"); //create your array keys 
$i=0; 
foreach($numbers as $number){ 
    $test[] = array($words[$i]=>$number); //add your array keys & values 
    $i++; 
} 
print_r($test); //show your results 
1

использовать этот способ

$numbers[0]; 
$numbers[1]; 
$numbers[2]; 
$numbers[3]; 
1

Во-первых, сделать массив ключей в

$key = ['first','second','third','fourth']; 

И тогда вы можете просто использовать array_combine как

$numbers = range(1,4); 
shuffle($numbers); 
$key = ['first','second','third','fourth']; 
$result = array_combine($key,$numbers); 

Demo

2

Если я правильно понимаю у вас есть массив, и вы хотеть определенные ценности изнутри?

Тогда почему бы не просто использовать array keys:

$array = array('peach','pear','apple','orange','banana'); 
echo $array[0]; // peach 
echo $array[1]; // pear 
echo $array[2]; // apple 

Или вы могли бы loop through the array так:

foreach ($array as $arrayKey => $arrayValue) { 
    // First value in the array is now below 
    echo $arrayKey; // 0 
    echo $arrayValue; // peach 
} 

Вы также можете проверить, является ли значение in an array так:

if (in_array('orange', $array)) { 
    echo 'yes'; 
} 

Редактировать:

// Our array values 
$array = array('peach','pear','apple','orange','banana'); 
// We won't shuffle for the example, we need expected results 
#$array = shuffle($array); 
// We want the first 3 values of the array 
$keysRequired = array(0,1,2); 
// This will hold our results 
$storageArray = array(); 
// So for the first iteration of the loop $arrayKey is going to be 0 
foreach ($array as $arrayKey => $arrayValue) { 
    // If the array key matches one of the values in the required array 
    if (in_array($arrayKey, $keysRequired)) { 
    // Store it within the storage array so we know what value it is 
    $storageArray[] = $arrayValue; 
    } 
} 
// Let's see what values have been stored 
echo "<pre>"; 
print_r($storageArray); 
echo "</pre>"; 

даст вам следующее:

Array 
(
    [0] => 'peach' 
    [1] => 'pear' 
    [2] => 'apple' 
) 
+0

Я хочу, чтобы каждый из чисел был их собственной переменной :). Ваш ответ выглядит так, что я помещаю каждый номер в массив вручную, но порядок чисел меняется каждый раз (это требуется), чтобы это не сработало? – Ben

+0

@Ben Вам просто нужно было бы пройти через массив и сохранить первые 3 значения. Criesto сделал это, но я дам вам еще один шанс взглянуть на дальнейшее понимание. –

+0

Использование тегов «arrayKey» и «arrayValue» невероятно полезно, я понимаю это намного больше.Спасибо :) – Ben

2

Вы можете использовать sizeof() это возврат размер размер массива, и передать значение ключа вручную. Like- echo $numbers[0]; echo $numbers[1]; echo $numbers[2];

Смежные вопросы