Stack Overflow en español Asked by idunno on November 17, 2021
Estoy haciendo un sistema de estadísticas que permite al usuario que se registró ver sus datos. Estos mismos son devueltos por una API.
Cuestión que OBVIAMENTE al ser un objeto, nuestro bucle foreach()
va a iterar sobre todas las propiedades del mismo.
Estaba pensando en utilizar funciones tales como strstr()
que justamente se encarga de encontrar la primera aparicion de un string. Pero no se como usarlo dentro de la semantica del bucle.
Aquí una muestra de mi codigo:
$almacen = llamadaApi();
if(is_array($almacen) || is_object($almacen)){
foreach($almacen as $index => $valores){
foreach ($valores as $params) {
$avatar = $params->avatar;
$nombre_uesva = $params->name;
$subs = strstr($almacen, $nombre);
var_dump($subs); // Cabe resaltar que estuve haciendo pruebas por corazonadas
if($subs = $nombre_uesva){
$millas = $valores->millas[$subs];
}
}
}
echo '<div class="millas_piloto_fdsp">';
echo '<b id="casillaMillas">Millas Voladas: ' . $millas;
echo '</b>';
echo '</div>';
echo '<div class="avatar_piloto_fdsp">';
echo '<img id="imagen_piloto" src="'.$avatar.'">';
echo '</div>';
Y mas abajo, una muestra de ejemplo de mi objeto.
stdClass Object
(
[ernor] => 0
[created] => 2020-05-07 00:00:26
[result] => Array
(
[0] => stdClass Object
(
[id] => XXXX
[name] => Pepe Argento
[country] => CO
[avatar] => XXX
[scoreRating] => 104,00
[pilotRating] => Estudiante
[imageRating] => XXX
[lastLoginDate] => 2020-05-01
[lastLoginTime] => 06:35:11
[UesvaRegisteredDate] => 2020-03-29
[UesvaRegisteredTimee] => 21:10:49
[ivao] => XXXX
[vatsim] => XXXX
[dataAirline] => stdClass Object
(
[callsign] => AXX
[totalFlights] => 2
[totalFlightsRegular] => 2
[totalFlightsCharter] => 0
[totalFlightsEvent] => 0
[totalFlightsTour] => 0
[totalFlightsTransfer] => 0
[totalHoursFlights] => 1:08:57
[totalHoursOnline] => 2:12:44
[totalMilesFlown] => 440
[totalPassengersCarried] => 279
[totalPassengersFirstClass] => 0
[totalPassengersBusiness] => 19
[totalPassengersEconomic] => 260
[totalCargoCarried] => 98.673
[lastFlightDate] => 30/04/2020
[monthFlights] => 0
[monthFlightsRegular] => 0
[monthFlightsCharter] => 0
[monthFlightsEvent] => 0
[monthFlightsTour] => 0
[monthFlightsTransfer] => 0
[monthHoursFlights] => 00:00:00
[monthHoursOnline] => 00:00:00
[monthMilesFlown] => 0
[monthPassengersCarried] => 0
[monthPassengersFirstClass] => 0
[monthPassengersBusiness] => 0
[monthPassengersEconomic] => 0
[monthCargoCarried] => 0
)
)
Y aca viene la pregunta del millón… ¿Es posible decirle a nuestro amigo foreach que comience a buscar desde que aparece un nombre equis?
Gracias al usuario @Trauma (Que lastimosamente elimino el comentario) Pude solucionar mis problemas. Si usted, @Trauma, esta leyendo esto le deseo muchisima salud. Gracias a usted pude solucionar.
Paso a publicar codigo:
/*
*
*
* @params $nombre - Es una variable que almacena el nombre del usuario logueado. (string)
*
*
*
*/
$almacen = llamadaApi(); // Una funcion que devuelve objeto.
// Start Generator
function generator($arr, $filtro){
$active = False; // Empieza estableciendo $active en false.
foreach ($arr as $key => $valor) { //Itera sobre $arr.
if($active){ //Si active es True...
yield $key => $valor; //Proporcioname el index y el valor actual.
continue; // Volve a ejecutar el foreach (ignorando todo el codigo de abajo)
}
if ($key == $filtro) { //Si el index es igual al filtro que proporcionaste..
$active = True; //Setea active en true
yield $key => $valor; //Proporciona el index y el valor actual.
}
}
}
$pilotos = NameFinder($almacen, $nombre);
foreach(generator($almacen, "result") as $key => $valor){
//Nada, solo pasa al siguiente array
foreach( generator( $valor, "name" ) as $key2 => $value2 ) {
$name1 = $value2->name;
if(substr_count($name1, $pilotos) != 0){ /*Si el valor de $name1 devuelve
resultado distinto a 0 entonces quiere decir que la comparacion de nombres concluyo con exito*/
echo "Valor encontrado!"
}elseif(substr_count($name1, $pilotos) == 0){
continue; //Si es igual a 0 vuelve a iterar hasta que lo encuentre
}else{
echo "Ocurrio un error. Codigo de error:74201-X1";
}
}
}
Answered by idunno on November 17, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP