Ir para conteúdo
Fórum Script Brasil
  • 0

Array


shelter

Pergunta

Boa galera,
Então estou tendo muita dificuldade pegar os dados de array, segue:
Tenho este codigo:
include "phpAMI.php";
$ami=new phpAMI("admin","admin");
$login=$ami->login();
if($login["Response"]=="Success"){
        print_r($ami->queueStatus ());
    $ami->logoff();
}


Recebo o seguinte:
Array ( [Response] => Success [Message] => Queue status will follow

  • => Array ( [default] => Array ( [Event] => QueueParams [Queue] => default [Max] => 0 [Strategy] => ringall [Calls] => 0 [Holdtime] => 0 [TalkTime] => 0 [Completed] => 0 [Abandoned] => 0 [ServiceLevel] => 0 [ServicelevelPerf] => 0.0 [Weight] => 0 [mNumber] => 0 ) [5000] => Array ( [Event] => QueueParams [Queue] => 5000 [Max] => 0 [Strategy] => ringall [Calls] => 0 [Holdtime] => 0 [TalkTime] => 0 [Completed] => 0 [Abandoned] => 0 [ServiceLevel] => 60 [ServicelevelPerf] => 0.0 [Weight] => 0 [mNumber] => 2 [members] => Array ( [Agent/0001] => Array ( [Event] => QueueMember [Queue] => 5000 [Name] => Agent/0001 [Location] => Agent/0001 [StateInterface] => Agent/0001 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 1 [Paused] => 0 ) [Agent/0002] => Array ( [Event] => QueueMember [Queue] => 5000 [Name] => Agent/0002 [Location] => Agent/0002 [StateInterface] => Agent/0002 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 5 [Paused] => 0 ) ) ) [5001] => Array ( [Event] => QueueParams [Queue] => 5001 [Max] => 0 [Strategy] => ringall [Calls] => 0 [Holdtime] => 0 [TalkTime] => 0 [Completed] => 0 [Abandoned] => 0 [ServiceLevel] => 60 [ServicelevelPerf] => 0.0 [Weight] => 0 [mNumber] => 2 [members] => Array ( [Agent/0003] => Array ( [Event] => QueueMember [Queue] => 5001 [Name] => Agent/0003 [Location] => Agent/0003 [StateInterface] => Agent/0003 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 5 [Paused] => 0 ) [Agent/0004] => Array ( [Event] => QueueMember [Queue] => 5001 [Name] => Agent/0004 [Location] => Agent/0004 [StateInterface] => Agent/0004 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 5 [Paused] => 0 ) ) ) ) [nQueues] => 3 ) 

Gostaria de ler assim:
ex.:

Response: Success
Message: Queue status will follow

Event: QueueParams
Queue: queue1
Max: 0
Strategy: ringall
Calls: 0
Holdtime: 0
TalkTime: 16
Completed: 3
Abandoned: 2
ServiceLevel: 0
ServicelevelPerf: 33.3
Weight: 0

Event: QueueMember
Queue: queue1
Name: Agent/1001
Location: Agent/1001
Membership: static
Penalty: 0
CallsTaken: 3
LastCall: 1330136746
Status: 5
Paused: 0

Event: QueueParams
Queue: queue2
Max: 0
Strategy: ringall
Calls: 0
Holdtime: 0
TalkTime: 0
Completed: 0
Abandoned: 0
ServiceLevel: 0
ServicelevelPerf: 0.0
Weight: 0

Event: QueueMember
Queue: queue2
Name: Agent/1001
Location: Agent/1001
Membership: static
Penalty: 0
CallsTaken: 0
LastCall: 0
Status: 5
Paused: 0

Agradeço desde já aos amigos,
grato.
 

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

Opa grato pela ajuda, mais não deu certo, olha oque aparece:

no: print_r($ami->queueStatus());

Array ( [Response] => Success [Message] => Queue status will follow

  • => Array ( [default] => Array ( [Event] => QueueParams [Queue] => default [Max] => 0 [Strategy] => ringall [Calls] => 0 [Holdtime] => 0 [TalkTime] => 0 [Completed] => 0 [Abandoned] => 0 [ServiceLevel] => 0 [ServicelevelPerf] => 0.0 [Weight] => 0 [mNumber] => 0 ) [5000] => Array ( [Event] => QueueParams [Queue] => 5000 [Max] => 0 [Strategy] => ringall [Calls] => 0 [Holdtime] => 0 [TalkTime] => 0 [Completed] => 0 [Abandoned] => 0 [ServiceLevel] => 60 [ServicelevelPerf] => 0.0 [Weight] => 0 [mNumber] => 2 [members] => Array ( [Agent/0001] => Array ( [Event] => QueueMember [Queue] => 5000 [Name] => Agent/0001 [Location] => Agent/0001 [StateInterface] => Agent/0001 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 1 [Paused] => 0 ) [Agent/0002] => Array ( [Event] => QueueMember [Queue] => 5000 [Name] => Agent/0002 [Location] => Agent/0002 [StateInterface] => Agent/0002 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 5 [Paused] => 0 ) ) ) [5001] => Array ( [Event] => QueueParams [Queue] => 5001 [Max] => 0 [Strategy] => ringall [Calls] => 0 [Holdtime] => 0 [TalkTime] => 0 [Completed] => 0 [Abandoned] => 0 [ServiceLevel] => 60 [ServicelevelPerf] => 0.0 [Weight] => 0 [mNumber] => 2 [members] => Array ( [Agent/0003] => Array ( [Event] => QueueMember [Queue] => 5001 [Name] => Agent/0003 [Location] => Agent/0003 [StateInterface] => Agent/0003 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 5 [Paused] => 0 ) [Agent/0004] => Array ( [Event] => QueueMember [Queue] => 5001 [Name] => Agent/0004 [Location] => Agent/0004 [StateInterface] => Agent/0004 [Membership] => static [Penalty] => 0 [CallsTaken] => 0 [LastCall] => 0 [Status] => 5 [Paused] => 0 ) ) ) ) [nQueues] => 3 ) Response: Success
     

 

Agora o que aparece no seu codigo:

Codigo:

foreach($ami->queueStatus() as $k => $v){
echo $k.': '.$v.'<br>'
}

Aparece:

Message: Queue status will follow
list: Array
nQueues: 3

Preciso de todos os dados do array, grato

Link para o comentário
Compartilhar em outros sites

  • 0

E função recursiva, o sr. já sabe fazer?

Vamos tentar assim:

No seu arquivo de funções acrescente a seguinte função:

function tratarArrayPraMim($a) {
    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
            echo $k . ': ' . $v . '<br>';
        }
    }
}

E no lugar de print_r($ami->queueStatus());

Coloque: tratarArrayPraMim($ami->queueStatus());

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

Mudou apenas a parte em que é criada uma função e que ela é recursiva

O que, neste caso, a recursividade faz:
O seu array pode ter vários níveis de arrays dentro dele que todos serão exibidos

Link para o comentário
Compartilhar em outros sites

  • 0

Não funcionou, continua a mesma coisa.

So abre isso.

Response: Success
Message: Queue status will follow
list: Array
nQueues: 3

9 horas atrás, lowys disse:

😂😂😂

Então tem um array dentro de outro. Tente criar uma função recursiva.



 

Teria algum ex.; pra me ajudar?

grato

 

Link para o comentário
Compartilhar em outros sites

  • 0

codigo:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
</head>

<body>
<?php
include "phpAMI.php";
$ami=new phpAMI("admin","shelter");
$login=$ami->login();
if($login["Response"]=="Success"){
		//print_r($ami->queueStatus());
		
		//$a = $ami->queueStatus();
		 tratarArrayPraMim($ami->queueStatus());
		
		function tratarArrayPraMim($a) {
   	    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
            echo $k . ': ' . $v . '<br>';
        }
    }
}
		
	/*	
	foreach($ami->queueStatus() as $k => $v){
    echo $k.': '.$v.'<br>';
	
	}
    */
	$ami->logoff();
}

?>
</body>
</html>

assim estou fazendo e não aparece nada na tela.

grato

Link para o comentário
Compartilhar em outros sites

  • 0

😂😂😂

A função precisa existir, antes de usá-la.

Observe com mais atenção as recomendações anteriores:

No seu arquivo de funções acrescente a seguinte função:

function tratarArrayPraMim($a) {
    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
            echo $k . ': ' . $v . '<br>';
        }
    }
}

E no lugar de print_r($ami->queueStatus());

É assim q se usa a função:

Coloque: tratarArrayPraMim($ami->queueStatus());

As funções devem ser carregas, devem existir, antes de serem usadas.

Senão... estarás usando uma função que não existe!

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo bom dia d, esta desta , eu fiz a troca que o amigo me pediu , e não funciona:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
</head>

<body>
<?php
include "phpAMI.php";
$ami=new phpAMI("admin","shelter");
$login=$ami->login();
if($login["Response"]=="Success"){
		//print_r($ami->queueStatus());
		
			
		   // aki esta a função que pediu pra usar
		 tratarArrayPraMim($ami->queueStatus($a));
		
		function tratarArrayPraMim($a) {
   	    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
            echo $k . ': ' . $v . '<br>';
        }
    }
}
		
	
	$ami->logoff();
}

?>
</body>
</html>

Se puder me ajudar .

grato

Link para o comentário
Compartilhar em outros sites

  • 0

Sr. Shelter.

Creio que o sr. é uma pessoa muito ocupada e não teve tempo suficiente para ler com atenção.

Mas a sua atenção será fundamental para o bom funcionamento do seu script. Tente acompanhar o raciocínio:

1) No seu arquivo de funções acrescente a seguinte função:

Para manter a organização, criamos as funções em um arquivo separado, para que possamos reutilizá-las(Sem a necessidade de repetir código) em todo o projeto;

Partindo da idéia de que o sr. ainda não tenha organizado suas funções separadamente em um arquivo, sugiro que crie um arquivo chamado helpers.php, com o seguinte conteúdo:

 

<?php

function tratarArrayPraMim($a) {
    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
            echo $k . ': ' . $v . '<br>';
        }
    }
}

 

2) no arquivo em o que o sr. está usando agora, proceda da seguinte maneira:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Documento sem título</title>
    </head>

    <body>
        <?php
        // inclua seu arquivo de funções aqui (antes de usar a função)
        include 'helpers.php';
        include "phpAMI.php";
        $ami = new phpAMI("admin", "shelter");
        $login = $ami->login();
        if ($login["Response"] == "Success") {
            // e somente aqui, use a função que foi previamente criada
            tratarArrayPraMim($ami->queueStatus($a));
            $ami->logoff();
        }
        ?>
    </body>
</html>

 

Entendeu a ordem sequencial lógica?

Primeiro a função precisa existir!

Só depois é que teremos a possibilidade de fazer uso dela!

Link para o comentário
Compartilhar em outros sites

  • 0

Boa amigo obrigado,

Mais continuo embolado, agora funcionou "otimo".

Porem não consigo tratar a preciso gravar em uma variavel a exempo só os dados [Name] e [status].

E nem sei como fazer, pois já estou tão stressado com esse terco que meu deus, se o sr. puder me ajudar lhe agradeço.

MUITO OBRIGADO MESMO .  

Link para o comentário
Compartilhar em outros sites

  • 0

Olá! acrescente na função, abaixo da linha:  echo $k . ': ' . $v . '<br>';

O seguinte trecho:

 $$k = $v; 

Assim, as variáveis terão os nomes dos índices.

Despois de executada a função, pode testar assim:

echo '<p>O conteúdo da variável $Nome é: '.$Nome.'</p>';
echo '<p>O conteúdo da variável $status é: '.$status.'</p>';

 

Só lembrando que, caso em qualquer nível haja um índice com o mesmo nome, somente o último valor atribuído permanecerá.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa amigo , obrigado pela ajuda, estou fazendo assim  esta me atendendo:

<?php

function tratarArrayPraMim($a) {
    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
           // echo $k . ': ' . $v . '<br>';
			$$k = $v; 
			//echo "Status e : .$status";
			
			//echo '<p>O conteúdo da variável $Name é: '.$Name.'</p>';
			//echo '<p>O conteúdo da variável $Status é: '.$Status.'</p>';
			
        }
    }
	if (($Queue == 5000) && ($Event == QueueMember)){
	echo '<p>O conteúdo da variavel $Queue é: '.$Queue.'</p>';
	echo '<p>O conteúdo da variável $Name é: '.$Name.'</p>';
	//echo '<p>O conteúdo da variável $Location é: '.$Location.'</p>';
	echo '<p>O conteúdo da variável $Status é: '.$Status.'</p>';		
	}

} 

			

Porém , não existe uma forma mais facil?

Eu preciso só destes campos e detalhe, eles estão duplicando.

haveria uma forma de não duplicar?,

grato

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado sr.
Creio que a leitura rápida não lhe permitiu a fácil compreensão do texto.

Leia com calma e atenção:

Depois de executada a função, pode testar assim:

echo '<p>O conteúdo da variável $Nome é: '.$Nome.'</p>';
echo '<p>O conteúdo da variável $status é: '.$status.'</p>';

Esse trecho não deve ser incluído dentro da função! Assim o sr. avacalha tudo! Gentileza não esculiambar o código ainda mais!!!


Vamos pensar em qual seria o trecho em que a função é executada??? 
Preste atenção! O lugar onde a função é criada é diferente do lugar onde a função é executada!!!

A função é executada aqui:

tratarArrayPraMim($ami->queueStatus($a));

Então o trecho sugerido acima(aquele com os parágrafos), deve ser inserido Depois de executada a função!!!

Então, com essa interpretação básica do texto, creio eu, que o ideal seria proceder assim:

tratarArrayPraMim($ami->queueStatus($a));
echo '<p>O conteúdo da variável $Nome é: '.$Nome.'</p>';
echo '<p>O conteúdo da variável $status é: '.$status.'</p>';

Agora... se o sr. não quer mais que apareça tuuuuudo! Substitua, na função a linha:

echo $k . ': ' . $v . '<br>';

Por:

$$k = $v;

Leia com bastante calma e atenção! A palavrinha Substitua, citada acima, quer dizer: Troque uma linha pela outra.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa amigo , obrigado pela ajuda, estou fazendo assim  esta me atendendo:

<?php

function tratarArrayPraMim($a) {
    foreach ($a as $k => $v) {
        if (is_array($v)) {
            tratarArrayPraMim($v);
        } else {
           // echo $k . ': ' . $v . '<br>';
			$$k = $v; 
			//echo "Status e : .$status";
			
			//echo '<p>O conteúdo da variável $Name é: '.$Name.'</p>';
			//echo '<p>O conteúdo da variável $Status é: '.$Status.'</p>';
			
        }
    }
	if (($Queue == 5000) && ($Event == QueueMember)){
	echo '<p>O conteúdo da variavel $Queue é: '.$Queue.'</p>';
	echo '<p>O conteúdo da variável $Name é: '.$Name.'</p>';
	//echo '<p>O conteúdo da variável $Location é: '.$Location.'</p>';
	echo '<p>O conteúdo da variável $Status é: '.$Status.'</p>';		
	}

} 

			

Porém , não existe uma forma mais facil?

Eu preciso só destes campos e detalhe, eles estão duplicando.

haveria uma forma de não duplicar?,

grato

caro amigo bom dia,

fico muito agradecido com a sua ajuda porem acho que deveria de ser mais humilde com seus amigos.

Ler eu sei , posso não estar aprendendo o que quer me ensinar , pois já estou de cabeça quente a tanto tempo com isso , aguora em relação a parte substituir acho que quem não leu foi o Sr, pois se prestar atenção a linha a qual pede para substituir foi comentada , imagino eu que seria mesma coisa.

Fiz da ultima forma que me pediu  e não funcionou não aparece nada .

Caso queira ajudar sem se amostrar tratando as pessoas desta forma, sugiro que até saia deste local.

grato + X.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Shelter!

O sr. tem toda razão!

Fui grosseiro e desnecessário!

Tenha certeza de que suas colocações vão me fazer buscar ser uma pessoa melhor.

Sugiro que abra um novo post, com sua questão atual, para que outros membros do fórum possam te ajudar.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...