【问题标题】:Sending multiple rows x cols to Flash from PHP从 PHP 向 Flash 发送多行 x 列
【发布时间】:2011-02-22 17:34:48
【问题描述】:

我有一个 Mysql 数据库,我正在尝试使用 PHP 将具有多列的多条记录导入 Flash AS3。我的问题是我能够使其与单列和多条记录一起使用,但对于多列我无法正确格式化它。我希望拥有的是关联数组(列)的数组(记录),即我希望能够基于“|”对输出(来自 php)进行分区并将其存储在闪存数组中,然后能够访问它们中的每一个的名称、id(参见下面的代码)。

php部分->

<?php
......//connection to mysql db ...etc.
$result = mysql_query($sql);
$output = "success=$db&myArrayForFlash=";

//error check
...
//form the return string
while($myRow = mysql_fetch_assoc($result)){
        $arrayElement = "&name=".$myRow['name'];        
        $arrayElement = $arrayElement."&id=".$myRow['id'];
        $output = $output."$arrayElement" . "|";
    }
}

echo($output);
?>

闪光部分->

function completeHandler(e:Event):void
        {
            if(e.target.data.success=="1"){
                var myArray:String = e.target.data.myArrayForFlash;  //empty
                var myCol:String = myArray[0]['id'];
                this.var= e.target.data.myArrayForFlash.split("|");

                //do something else
            }
            else
            {
                Alert.show("Query failed. \n");
            }
        }

问题是我得到了一个名称数组,但 myArrayForFlash 是空的(这是意料之中的)。有什么办法可以解决这个问题吗?

我是 flash/php 的新手,所以任何帮助都很有用!

这是我使用的referenceanother。 (我尝试搜索类似的东西,但我得到的只是返回多行 1 列或 1 行多列)

【问题讨论】:

  • trace(e.target.data); 显示什么?
  • 所以它有类似名称数组 - name[0],name[1].... 和 id 数组 id[0],id[1]... 并且它们显示正确的值。
  • nameid 数组具有相同的长度,并且对于每个 i id[i]name[i] 来说都是正确的?

标签: php database flash actionscript-3


【解决方案1】:
function createList(names: Array, ids: Array):Object{
    if(names.length != ids.length){
        trace('incorrect input');
        return null;/*you may throw an error as well*/
    }
    var hash:Object = new Object();
    for(var i: int = 0; i < names.length; i++){
        hash[ids[i]] = names[i];/*or hash[names[i]] = ids[i] if name is a key*/
    }
    return hash;
}

更新:

function createList(names: Array, ids: Array):Array{
    if(names.length != ids.length){
        trace('incorrect input');
        return null;/*you may throw an error as well*/
    }
    var hash:Array = new Array();
    for(var i: int = 0; i < names.length; i++){
        hash.push({id:ids[i], name:names[i]});
    }
    return hash;
}

【讨论】:

  • 好吧,有必要把它放在关联数组的数组中。这可能吗?
  • @sg88 - 不确定我是否理解结构。你的意思是一个以键值对作为元素的数组(带有数字索引)?
  • 是的,这正是我想要的。这样我就可以以 myArray[i]['name'] 的形式访问元素,例如
猜你喜欢
  • 2011-10-16
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2012-12-30
相关资源
最近更新 更多