2016-11-23 2 views
0

Хорошо, поэтому я пытаюсь сравнить, какой массив имеет большее значение, но я хочу, чтобы этот код был короче, а не два раза foreach.PHP проверить, какой массив имеет большее значение

$one = array("test", "100"); 
$two = array("something", "200"); 

$distance1; 
$distance2; 

foreach($one as $val => $key) { 
    $distance1 = $val; 
} 

foreach($two as $val => $key) { 
    $distance2 = $val; 
} 

if($distance1 > $distance2) 
+0

Вы имеете в виду, что у массива больше элементов? – Rizier123

+0

Нет, как вы можете видеть, тест содержит 100 и что-то содержит 200, я хочу автоматически проверить, является ли тест biiger чем-то (их значения, на моем примере вы можете увидеть значения 100 и 200) –

+0

Обратите внимание, что ваши массивы имеют 2, и, как из вашего кода, похоже, что у вас есть только одно значение. Кроме того, обратите внимание, что в вашем цикле foreach у вас есть '$ val => $ key' в неправильном порядке. Так что вы, возможно, захотите просто сделать: 'array (" test "=> 100)', а затем вы можете использовать '' test "' как ключ для доступа к элементу напрямую, как этот '$ one [" test "]' – Rizier123

ответ

-2

вы можете объединить 2 массивы

<?php 
    $one = array("test", "100"); 
    $two = array("something", "200"); 
    $result = array_merge($one , $two); 
    foreach($result as $val => $key) { 
     echo $val; 
    } 
    ?> 
0

Я не совсем уверен, что вы хотите сделать, и это было некоторое время, так как я в последний раз написал PHP, но я люблю этот вопрос, и я хотел бы предложить 4 возможных подходов:

1: использовать массивы, которые вы указали (я считаю, что это может быть то, что вы имеете в виду)

$one = array("test", "100"); 
$two = array("something", "200"); 

$distance1 = $one[1]; 
$distance2 = $two[1]; 

if($distance1 > $distance2) 

2: ассоциативные массивы, а также номера для значений

$one = array(
    "name" = > "test", 
    "distance" => 100 
); 
$two = array(
    "name" => "something", 
    "distance" => 200 
); 

if ($one["distance"] > $two["distance"]) 

3: Использование цикла Еогеасп с $ ключ и $ Val

$distances = array(
    "test" => 100, 
    "something" => 200 
); 
$highestDistance = 0; 
$highest = null; 

foreach ($distances as $key => $val) { 
    if ($val >= highestDistance) { 
     $highestDistance = $val; 
     $highest = $key; 
    } 
} 

if ($highest === 'test') 

4: объекты и сортировка:

$distances = array(
    (object) array(
     "name" => "test", 
     "distance" => 100 
    ), 
    (object) array(
     "name" => "something", 
     "distance" => 200 
    ) 
); 

usort($distances, function($a, $b) { return $a - $b; }); 

if ($distances[0]->name === 'test') 

Обратите внимание, что условия окончательных операторов if оцениваются до false, так как я считаю, что это ваше намерение (потому что 100 не превышает 200).