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