Jump to content
Fórum Script Brasil
  • 0

Array


shelter
 Share

Question

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 to comment
Share on other sites

19 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...