Ajuda Array PHP

  • Autor Autor deskpro123
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
deskpro123

deskpro123

Zeta
Verificación en dos pasos activada
Hola a todos, espero la ayuda de algun conocedor de los arrays PHP ya que no he podido hacerlo yo mismo por mas que he tratado.

Es lo siguiente:

Tengo un codigo php que me muestra este array:

Inserir CODE, HTML ou PHP:
[data] => Array
        (
            [0] => Array
                (
                    [AdSlot.name] => slot66234-Article Banner
                    [adImps] => 0
                    [adCost] => 0
                )

            [1] => Array
                (
                    [AdSlot.name] => slot66731-Large Banner
                    [adImps] => 2
                    [adCost] => 0
                )

            [2] => Array
                (
                    [AdSlot.name] => slot66732-Articles Banner
                    [adImps] => 5
                    [adCost] => 0
                )

            [3] => Array
                (
                    [AdSlot.name] => slot68463-Article Banner over desription
                    [adImps] => 2
                    [adCost] => 0
                )

            [4] => Array
                (
                    [AdSlot.name] => slot70033-upper
                    [adImps] => 5
                    [adCost] => 0
                )

            [5] => Array
                (
                    [AdSlot.name] => slot71550-bigger
                    [adImps] => 1035
                    [adCost] => 0
                )

            [6] => Array
                (
                    [AdSlot.name] => slot71579-SHP
                    [adImps] => 30
                    [adCost] => 0
                )

            [7] => Array
                (
                    [AdSlot.name] => slot71658-down
                    [adImps] => 16
                    [adCost] => 0
                )

            [8] => Array
                (
                    [AdSlot.name] => slot73144-bugatt
                    [adImps] => 2
                    [adCost] => 0
                )

            [9] => Array
                (
                    [AdSlot.name] => slot73206-slower
                    [adImps] => 6
                    [adCost] => 0
                )

            [10] => Array
                (
                    [AdSlot.name] => slot81097-upper
                    [adImps] => 43277
                    [adCost] => 38.9556
                )

            [11] => Array
                (
                    [AdSlot.name] => slot81098-downer
                    [adImps] => 88012
                    [adCost] => 33.5639
                )

            [12] => Array
                (
                    [AdSlot.name] => slot81589-ret
                    [adImps] => 52
                    [adCost] => 0
                )

            [13] => Array
                (
                    [AdSlot.name] => slot82259-upp
                    [adImps] => 210
                    [adCost] => 0.0268
                )

        )

)

Quisiera mostrar los resultados por AdSlotName un ejemplo, si solo quiero ver los resultados de: slot81098-downer, como seria?

Lo tenia asi:

$imps2=$response["data"][11]["adImps"] ;
$dinero2=$response["data"][11]["adCost"];

Pero no quiero que sea por el ID del array sino por el AdSlotName.

Un saludo y gracias de antemano,
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Basta con que uses la función array_search de php, y te quedaría así:

$array_data = $response["data"];
$imps2 = $array_data[array_search('slot81098-downer',$array_data)]["adImps"] ;
$dinero2=$array_data[array_search('slot81098-downer',$array_data)]["adCost"];

Un saludo :encouragement:
 
Basta con que uses la función array_search de php, y te quedaría así:

$array_data = $response["data"];
$imps2 = $array_data[array_search('slot81098-downer',$array_data)]["adImps"] ;
$dinero2=$array_data[array_search('slot81098-downer',$array_data)]["adCost"];

Un saludo :encouragement:

Doy fe...

Pd: (Debo ingresar mas de 10 caracteres...)
 
Pues ahora el que no la da soy yo, me equivoqué :drunk:, hay otro array más, sino quieres introducir la clave vas a tener que hacer un código más larguito:

PHP:
$array_data = $response["data"];
for($i=0;$i<count($array_data);$i++){
    if($array_data[$i][AdSlot.name] = 'slot81098-downer'){
        $clave = $i;
        break;
    }
}
$imps2 = $array_data[$clave]["adImps"];
$dinero2=$array_data[$clave]["adCost"];

Ahora sí que debe de funcionar, saludos :star2:
 
Basta con que uses la función array_search de php, y te quedaría así:

$array_data = $response["data"];
$imps2 = $array_data[array_search('slot81098-downer',$array_data)]["adImps"] ;
$dinero2=$array_data[array_search('slot81098-downer',$array_data)]["adCost"];

Un saludo :encouragement:



Pues ahora el que no la da soy yo, me equivoqué :drunk:, hay otro array más, sino quieres introducir la clave vas a tener que hacer un código más larguito:

PHP:
$array_data = $response["data"];
for($i=0;$i<count($array_data);$i++){
    if($array_data[$i][AdSlot.name] = 'slot81098-downer'){
        $clave = $i;
        break;
    }
}
$imps2 = $array_data[$clave]["adImps"];
$dinero2=$array_data[$clave]["adCost"];

Ahora sí que debe de funcionar, saludos :star2:

Gracias Companeros, probare ambos codigos para asi aprender mejor el funcionamiento de las Arrays, que cuando aprendia PHP, me salte esa parte en los videotutoriales 🙁.

Pasenme sus Skypes porfavor, busco programadores para algunos proyectos.
 
Buen dia:
Considerando que oldArray es tu array donde tienes tu data tal cual la pusiste en el post entonces asi podrias tenerla como la estas pidiendo


PHP:
$newArray = array();
foreach($oldArray["data"] as $k => $v){
	$newArray["data"][$oldArray["data"][$k]["AdSlot.name"]] = array("adImps" => $oldArray["data"][$k]["adImps"],
															"adCost" => $oldArray["data"][$k]["adCost"]
														);
}


Un saludo
 
Última edição:
Basta con que uses la función array_search de php, y te quedaría así:

$array_data = $response["data"];
$imps2 = $array_data[array_search('slot81098-downer',$array_data)]["adImps"] ;
$dinero2=$array_data[array_search('slot81098-downer',$array_data)]["adCost"];

Un saludo :encouragement:

Pues ahora el que no la da soy yo, me equivoqué :drunk:, hay otro array más, sino quieres introducir la clave vas a tener que hacer un código más larguito:

PHP:
$array_data = $response["data"];
for($i=0;$i<count($array_data);$i++){
    if($array_data[$i][AdSlot.name] = 'slot81098-downer'){
        $clave = $i;
        break;
    }
}
$imps2 = $array_data[$clave]["adImps"];
$dinero2=$array_data[$clave]["adCost"];

Ahora sí que debe de funcionar, saludos :star2:

Buen dia:
Considerando que oldArray es tu array donde tienes tu data tal cual la pusiste en el post entonces asi podrias tenerla como la estas pidiendo


PHP:
$newArray = array();
foreach($oldArray["data"] as $k => $v){
	$newArray["data"][$oldArray["data"][$k]["AdSlot.name"]] = array("adImps" => $oldArray["data"][$k]["adImps"],
															"adCost" => $oldArray["data"][$k]["adCost"]
														);
}


Un saludo


No me ha funcionado ninguno 🙁

Les pasare el codigo aver si me pueden ayudar:

Este codigo:

Inserir CODE, HTML ou PHP:
$params = array(
'measurements' => array('adImps', 'adCost'),
'dimensions' => array('Country.name'),
'date_range' => 'today',
);

$ch = curl_init();
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
if (!empty($params)) {
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('data' => json_encode($params)));
}
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

echo '<pre>';
print_r($response);
echo '</pre>';

Me genera estos resultados

Inserir CODE, HTML ou PHP:
   [data] => Array
        (
            [0] => Array
                (
                    [AdSlot.name] => slot66234-Article Banner
                    [adImps] => 0
                    [adCost] => 0
                )

            [1] => Array
                (
                    [AdSlot.name] => slot66731-Large Banner
                    [adImps] => 2
                    [adCost] => 0
                )

            [2] => Array
                (
                    [AdSlot.name] => slot66732-Articles Banner
                    [adImps] => 3
                    [adCost] => 0
                )

            [3] => Array
                (
                    [AdSlot.name] => slot68463-Article Banner over desription
                    [adImps] => 1
                    [adCost] => 0
                )

            [4] => Array
                (
                    [AdSlot.name] => slot70033-upper
                    [adImps] => 4
                    [adCost] => 0
                )

            [5] => Array
                (
                    [AdSlot.name] => slot71550-bigger
                    [adImps] => 652
                    [adCost] => 0
                )

            [6] => Array
                (
                    [AdSlot.name] => slot71579-SHP
                    [adImps] => 20
                    [adCost] => 0
                )

            [7] => Array
                (
                    [AdSlot.name] => slot71658-down
                    [adImps] => 11
                    [adCost] => 0
                )

            [8] => Array
                (
                    [AdSlot.name] => slot81097-upper
                    [adImps] => 30071
                    [adCost] => 25.2193
                )

            [9] => Array
                (
                    [AdSlot.name] => slot81098-downer
                    [adImps] => 61227
                    [adCost] => 22.6779
                )

            [10] => Array
                (
                    [AdSlot.name] => slot81589-ret
                    [adImps] => 42
                    [adCost] => 0
                )

            [11] => Array
                (
                    [AdSlot.name] => slot82259-upp
                    [adImps] => 59
                    [adCost] => 0
                )

        )

)

Como obtengo resultados con el AdSlot.Name? Quiero obtener solo adImp y adCost de slot81098-downer?
 
[MENTION=25010]deskpro123[/MENTION] creo que no te ha funcionado porque se me olvidó ponerle las comillas al elemento del array ni dos iguales en una condición la verdad es que ese día estaría idioto perdido porque son errores muy tontos, mira la diferencia ahora quedaría así, sino te funciona dime que errores te da:

PHP:
$array_data = $response["data"]; 
for($i=0;$i<count($array_data);$i++){ 
    if($array_data[$i]['AdSlot.name'] == 'slot81098-downer'){ 
        $clave = $i; 
        break; 
    } 
} 
$imps2 = $array_data[$clave]["adImps"]; 
$dinero2=$array_data[$clave]["adCost"];
 
Te copio todo lo que he hecho en código. Supuestamente debes reemplazar oldArray por response
PHP:
$oldArray = array("data" => array(	array(
										"AdSlot.name"	=> "slot66234-Article banner",
										"adImps"		=>	"0",
										"adCost"		=>	"0"
									),
									array("AdSlot.name"	=> "slot66731-Large banner",
										"adImps"		=>	"0",
										"adCost"		=>	"0"
									),
									array("AdSlot.name"	=> "slot66732-Articles banner",
										"adImps"		=>	"0",
										"adCost"		=>	"0"
									)
								)
					);

$newArray = array();
foreach($oldArray["data"] as $k => $v){
	$newArray["data"][$oldArray["data"][$k]["AdSlot.name"]] = array("adImps" => $oldArray["data"][$k]["adImps"],
																	"adCost" => $oldArray["data"][$k]["adCost"]
																);
}
echo "<pre>";
var_dump($newArray["data"]["slot66234-Article banner"]);
echo "</pre>";

Esto me bota en mi localhost. Es PHP 5.2.16 en win7
result.webp
 
Última edição:
[MENTION=25010]deskpro123[/MENTION] creo que no te ha funcionado porque se me olvidó ponerle las comillas al elemento del array ni dos iguales en una condición la verdad es que ese día estaría idioto perdido porque son errores muy tontos, mira la diferencia ahora quedaría así, sino te funciona dime que errores te da:

PHP:
$array_data = $response["data"]; 
for($i=0;$i<count($array_data);$i++){ 
    if($array_data[$i]['AdSlot.name'] == 'slot81098-downer'){ 
        $clave = $i; 
        break; 
    } 
} 
$imps2 = $array_data[$clave]["adImps"]; 
$dinero2=$array_data[$clave]["adCost"];

Gracias, que me ha funcionado, esta perfecto, muchisimas gracias 😀
 
Voltar
Topo