php注意:数组到字符串的转换

时间:2013-09-06 12:32:26

标签: php arrays api multidimensional-array

嗨所有即时通讯新的PHP和新的堆栈溢出但在PHP中有一些知识我试图做的是从我的返回数组调用从api函数获取一个值是

$character->getSlot('head');

使用print_r给我:

Array ( 
[icon] => http://url to image location
[name] => Wizard's Petasos 
[slot] => head )

如果我回显$ character-> getSlot('head','name);在第19行给我C:\ xampp \ htdocs \ test \ index.php并返回单词Array

这是index.php

的部分
<?php
include('api.php');

// Call API
$API = new LodestoneAPI();

// Search for: Demonic Pagan on Sargatanas
$character = $API->get(array(
"name" => "Darka Munday",
"server" => "Ragnarok"
));

// Basic character data
echo "Character ID: " . $character->getID(); 
$ID = $character->getID();
$API->parseProfile($ID);
$Character = $API->getCharacterByID($ID);
echo $character->getSlot('head', 'name');

以及api的部分以防万一

// GEAR
public function setGear($Array)
{
$this->Gear['slots'] = count($Array);
$GearArray = NULL;

// Loop through gear equipped
    $Main = NULL;
                    foreach($Array as $A)
            {
                // Temp array
                $Temp = array();

                // Loop through data
                $i = 0;
                foreach($A as $Line)
                {
                        // Item Icon
                        if (stripos($Line, 'socket_64') !== false) { $Data = trim(explode('&quot;', $A[$i + 1])[1]); $Temp['icon'] = $Data; }
                        if (stripos($Line, 'item_name') !== false) { $Data = trim(str_ireplace(array('>', '"'), NULL, strip_tags(html_entity_decode($A[$i + 2])))); $Temp['name'] = htmlspecialchars_decode(trim($Data), ENT_QUOTES); }
                        if (stripos($Line, 'item_name') !== false) {
                        $Data = htmlspecialchars_decode(trim(html_entity_decode($A[$i + 3])), ENT_QUOTES);
                        if (
                                strpos($Data, " Arm") !== false ||
                                strpos($Data, " Grimoire") !== false ||
                                strpos($Data, " Tool") !== false
                                        )
                                        { $Main = $Data; $Data = 'Main'; }
                    $Temp['slot'] = strtolower($Data);
                                }

                                // Increment
                                $i++;
            }

            // Slot manipulation
                                $Slot = $Temp['slot'];
                                    if (isset($GearArray[$Slot])) { $Slot = $Slot . 2; }

                                    // Append array
                                    $GearArray['numbers'][] = $Temp;
                                    $GearArray['slots'][$Slot] = $Temp;
                                    }

                                    // Set Gear
                                    $this->Gear['equipped'] = $GearArray;

                                    // Set Active Class
                                    $classjob = str_ireplace('Two-Handed ', NULL, explode("'", $Main)[0]);
                                    $this->Stats['active']['class'] = $classjob;
                                    if (isset($this->Gear['soul crystal'])) { $this->Stats['active']['job'] = str_ireplace("Soul of the ", NULL, $this->Gear['soul crystal']['name']); }
                                    }
                                    public function getGear()           { return $this->Gear; }
    public function getEquipped($Type)  { return $this->Gear['equipped'][$Type]; }
    public function getSlot($Slot)      { return $this->Gear['equipped']['slots'][$Slot]; }

对此的解决方案可能非常简单,我真的很蠢但是任何帮助都会很棒:)提前感谢

1 个答案:

答案 0 :(得分:3)

public function getSlot($Slot) { 
     return $this->Gear['equipped']['slots'][$Slot]; 
}

getSlot方法只有一个参数。您正在传递另一个参数,但getSlot方法返回数组。

你可以这样做:

public function getSlot($Slot, $param = null) {
    if(empty($param)) {
          return $this->Gear['equipped']['slots'][$Slot]; 
    } else {
        if(isset($this->Gear['equipped']['slots'][$Slot][$param] )) {
            return $this->Gear['equipped']['slots'][$Slot][$param];
        } else {
            return null;
        }
    }     
}

OR

echo $character->getSlot('head')['name'] // If version is >= 5.4.*

如果版本&lt; 5.4。*

$slot = $character->getSlot('head');
echo $slot['name'];