I just began PH and I have a problem that blocks me. I have a Select form and I need to associate each option to several arrays in a multidimensional array. Here my select:
<select name="city">
<option value="Dublin">Dublin</option>
<option value="Nice">Nice</option>
<option value="Orleans">Orléans</option>
<option value="Paris">Paris</option>
<option value="Tours">Tours</option>
</select>
And my multi array:
$travels = array(
'0' => array('Départ ' =>'Paris', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '11:00', 'Heure d\'arrivée ' => '12:34', 'Chauffeur ' => 'Thomas'),
'1' => array('Départ ' =>'Orléans', 'Arrivée ' => 'Nantes', 'Heure de départ ' =>'05:15', 'Heure d\'arrivée ' => '09:32', 'Chauffeur ' =>'Mathieu'),
'2' => array('Départ ' =>'Dublin', 'Arrivée ' => 'Tours', 'Heure de départ ' =>'07:23', 'Heure d\'arrivée ' => '08:50', 'Chauffeur ' =>'Nathanaël'),
'3' => array('Départ ' =>'Paris', 'Arrivée ' => 'Orléans', 'Heure de départ ' =>'03:00', 'Heure d\'arrivée ' => '05:26', 'Chauffeur ' => 'Clément'),
'4' => array('Départ ' =>'Paris', 'Arrivée ' => 'Nice', 'Heure de départ ' => '10:00', 'Heure d\'arrivée ' => '12:09', 'Chauffeur ' => 'Audrey'),
'5' => array('Départ ' =>'Nice', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '10:40', 'Heure d\'arrivée ' =>'13:00', 'Chauffeur ' =>'Pollux'),
'6' => array('Départ ' =>'Nice', 'Arrivée ' => 'Tours', 'Heure de départ ' => '11:00', 'Heure d\'arrivée ' => '16:10', 'Chauffeur ' =>'Edouard'),
'7' => array('Départ ' =>'Tours', 'Arrivée ' => 'Amboise', 'Heure de départ ' => '16:00', 'Heure d\'arrivée ' => '18:40', 'Chauffeur ' =>'Priscilla'),
'8' => array('Départ ' =>'Nice', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '12:00', 'Heure d\'arrivée ' =>'16:00', 'Chauffeur ' =>'Charlotte'),
The problem is I need to display the arrays in which the "Départ" value correspond to the select option.
To be more precise, if I select "Paris", the arrays (and all the values) 0, 3 and 4 will display. For the moment I only know how to display all the arrays (even those I don't need).
I don't know if I was clear enough. Thank you by advance for all your helps.
There might be a better way to do this, but this quick snippet can help with what you are trying to achieve:
<?php
$travels = array(
'0' => array('Départ ' =>'Paris', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '11:00', 'Heure d\'arrivée ' => '12:34', 'Chauffeur ' => 'Thomas'),
'1' => array('Départ ' =>'Orléans', 'Arrivée ' => 'Nantes', 'Heure de départ ' =>'05:15', 'Heure d\'arrivée ' => '09:32', 'Chauffeur ' =>'Mathieu'),
'2' => array('Départ ' =>'Dublin', 'Arrivée ' => 'Tours', 'Heure de départ ' =>'07:23', 'Heure d\'arrivée ' => '08:50', 'Chauffeur ' =>'Nathanaël'),
'3' => array('Départ ' =>'Paris', 'Arrivée ' => 'Orléans', 'Heure de départ ' =>'03:00', 'Heure d\'arrivée ' => '05:26', 'Chauffeur ' => 'Clément'),
'4' => array('Départ ' =>'Paris', 'Arrivée ' => 'Nice', 'Heure de départ ' => '10:00', 'Heure d\'arrivée ' => '12:09', 'Chauffeur ' => 'Audrey'),
'5' => array('Départ ' =>'Nice', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '10:40', 'Heure d\'arrivée ' =>'13:00', 'Chauffeur ' =>'Pollux'),
'6' => array('Départ ' =>'Nice', 'Arrivée ' => 'Tours', 'Heure de départ ' => '11:00', 'Heure d\'arrivée ' => '16:10', 'Chauffeur ' =>'Edouard'),
'7' => array('Départ ' =>'Tours', 'Arrivée ' => 'Amboise', 'Heure de départ ' => '16:00', 'Heure d\'arrivée ' => '18:40', 'Chauffeur ' =>'Priscilla'),
'8' => array('Départ ' =>'Nice', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '12:00', 'Heure d\'arrivée ' =>'16:00', 'Chauffeur ' =>'Charlotte'));
// get your select option (assuming Orléans)
$selectOption = "Orléans";
$temp = array();
foreach ($travels as $key => $value) {
$t = $travels[$key]['Départ '];
if ($t == $selectOption) {
array_push($temp, $value);
}
}
print_r($temp);
I'd advise you find a way to store the result of temp for a given selection to avoid recomputing over and over again.
You could use the array_filter method:
<?php
$travels = array(
'0' => array('Départ ' =>'Paris', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '11:00', 'Heure d\'arrivée ' => '12:34', 'Chauffeur ' => 'Thomas'),
'1' => array('Départ ' =>'Orléans', 'Arrivée ' => 'Nantes', 'Heure de départ ' =>'05:15', 'Heure d\'arrivée ' => '09:32', 'Chauffeur ' =>'Mathieu'),
'2' => array('Départ ' =>'Dublin', 'Arrivée ' => 'Tours', 'Heure de départ ' =>'07:23', 'Heure d\'arrivée ' => '08:50', 'Chauffeur ' =>'Nathanaël'),
'3' => array('Départ ' =>'Paris', 'Arrivée ' => 'Orléans', 'Heure de départ ' =>'03:00', 'Heure d\'arrivée ' => '05:26', 'Chauffeur ' => 'Clément'),
'4' => array('Départ ' =>'Paris', 'Arrivée ' => 'Nice', 'Heure de départ ' => '10:00', 'Heure d\'arrivée ' => '12:09', 'Chauffeur ' => 'Audrey'),
'5' => array('Départ ' =>'Nice', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '10:40', 'Heure d\'arrivée ' =>'13:00', 'Chauffeur ' =>'Pollux'),
'6' => array('Départ ' =>'Nice', 'Arrivée ' => 'Tours', 'Heure de départ ' => '11:00', 'Heure d\'arrivée ' => '16:10', 'Chauffeur ' =>'Edouard'),
'7' => array('Départ ' =>'Tours', 'Arrivée ' => 'Amboise', 'Heure de départ ' => '16:00', 'Heure d\'arrivée ' => '18:40', 'Chauffeur ' =>'Priscilla'),
'8' => array('Départ ' =>'Nice', 'Arrivée ' => 'Nantes', 'Heure de départ ' => '12:00', 'Heure d\'arrivée ' =>'16:00', 'Chauffeur ' =>'Charlotte')
);
$selected = 'Paris';
function get_destination($travel) {
global $selected;
return $travel["Départ "] === $selected;
}
print_r(array_filter($travels, 'get_destination'));