Как я могу выполнить поиск в массиве определенных значений?

#php

#php

Вопрос:

Мне нужна некоторая помощь с тем, как я могу выполнить поиск в массиве из окна поиска.

Допустим, я ищу $ticker и пишу BTC

Затем он будет распечатан:

 The last known currency for BTC is 57 
  

Я только хочу, чтобы он выводил значения $ k3.

Был бы признателен, если бы вы не торопились и направили меня в правильном направлении 🙂

 <form method="POST" action="">
    <input type="text" name="Searcharray" name="searcharray">
    <input type="submit" value="Search" name="searcharray">
</form>

<?php

$ticker = array(
    0 => "BTC",
    1 => "ETH",
    2 => "LTC",
    3 => "XMR",
    4 => "XRP"
);
$name = array(
    0 => "Bitcoin",
    1 => "Ethereum",
    2 => "Litecoin",
    3 => "Monero",
    4 => "Ripple"
);
$k1 = array(
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4,
    4 => 5
);
$k2 = array(
    0 => 11,
    1 => 12,
    2 => 13,
    3 => 14,
    4 => 15
);
$k3 = array(
    0 => 17,
    1 => 27,
    2 => 37,
    3 => 47,
    4 => 57
);
?>
  

Комментарии:

1. какова связь, кроме последовательности?

2. Почему вы помещаете все в разные массивы, вместо того, чтобы использовать 2-мерный массив?

3. Используйте array_search() для поиска индекса BTC в $ticker . Затем используйте этот индекс, чтобы получить цену из $k3 . В чем проблема?

4. Возможно, база данных здесь окажется более полезной, чем фиксированные массивы…

5. Где ваша попытка? Я просто вижу форму и массив.

Ответ №1:

array_search помог бы — http://php.net/manual/de/function .array-search.php

 $index = array_search('BTC', $ticker);
$value = $k3[$index];
  

Почему бы вам не создать такую структуру?:

 $data = [
  'BTC' => [
     'name' => 'Bitcoin',
     'k1' => 1,
     'k2' => 11,
     'k3' => 17
  ], ...
];
  

тогда это было бы:

 $value = $data['BTC']['k3'];
  

Комментарии:

1. Спасибо за помощь!

Ответ №2:

 $index = array_search("BTC", $ticker);
if ($index !== FALSE) {
    $currency = $k3[$index];
    echo "The last known currency of BTC is $currency";
}
  

Но все было бы проще, если бы вы использовали 2-мерный ассоциативный массив:

 $data = [
    "BTC" => ["name" => "Bitcoin", "k1" => 1, "k2" => 11, "k3" => 17],
    "ETH" => ["name" => "Ethereum", "k1" => 2, "k2" => 12, "k3" => 27],
    ...
];
  

Затем вы можете сделать:

 if (isset($data["BTC"])) {
    $currency = $data["BTC"]["k3"];
    echo "The last known currency of BTC is $currency";
}
  

Комментарии:

1. Хорошо, я разберусь с этим. Спасибо за помощь!

2. Вы правы во всем, что вы здесь говорите, однако OP хотел получить значение, 57 которое, по-видимому, является последним элементом в $k3 массиве. Я не уверен, как эти массивы связаны друг с другом… Возможно, если @kabakka даст нам больше подсказок о том, как вы получаете последний элемент $k3 из поиска $ticker , нужно ли нам array_reverse($k3) ?