Php 从锁定到ID的多维数组中获取特定值

Php 从锁定到ID的多维数组中获取特定值,php,css,database,multidimensional-array,pdo,Php,Css,Database,Multidimensional Array,Pdo,也许标题有点混乱,但让我试着解释一下 我有一个数据库informix,并使用PHP PDO,在该数据库中有一个包含页面样式表的表。 这样看: 特殊的ID,完整的样式表,就像我们在CSS文件中制作的一样 目前,我可以在多维数组中显示记录,请参见下面的代码和输出: $query = $db -> prepare("select alpb_box_id, alpb_style::lvarchar as STYLESHEET from ao_link_page_boxes WHERE alp

也许标题有点混乱,但让我试着解释一下

我有一个数据库informix,并使用PHP PDO,在该数据库中有一个包含页面样式表的表。 这样看:

特殊的ID,完整的样式表,就像我们在CSS文件中制作的一样

目前,我可以在多维数组中显示记录,请参见下面的代码和输出:

$query = $db -> prepare("select alpb_box_id, alpb_style::lvarchar as STYLESHEET  
from ao_link_page_boxes WHERE  alpb_li_id = 633 AND alpb_lngcode = '031' AND 
alpb_pageno = 1"); 

$query -> execute();

$result = array();

while($row = $query->fetch(PDO::FETCH_ASSOC)) {

$result[] = $row;
}
$db = null;

echo "<pre>";
print_r($result);
echo "</pre>";
现在我要做的是,从每个ID中获取,比如:TXT-633-P1B1,以下样式:

高度:75px;,宽度:793px;,顶部:0px;左:0px

并将它们存储到结果中,以便在需要时重复使用和回显它们

在这种情况下,我应该得到4个ID和4个样式项,包括金额px

有人知道怎么做吗。 我希望我正确地解释了我的问题

谢谢


谢谢,这很有帮助,我有一个问题

如何将这些值添加到预先制作的div中。 例如:

$new_styles = array();
$styles_to_collect = array('height', 'width', 'top', 'left');
foreach($result as $r)
{
        $new_entry = array();
        foreach($styles_to_collect as $stc)
        {
                preg_match('/[;\s]\s*'.$stc.':\s*([\d]+(px)?)([;\s]|$)/', $r['STYLESHEET'], $matches);
                $new_entry[$stc] = $matches[1];
        }
        $new_styles[$r['ALPB_BOX_ID']] = $new_entry;
}
对于该数组中的每个ID都是这样

谢谢,我真的很感激。

试试这个:

Array
(
    [TXT-633-P1B1] => Array
        (
            [height] => 75px
            [width] => 793px
            [top] => 0px
            [left] => 0px
        )

    [TXT-633-P1B2] => Array
        (
            [height] => 197px
            [width] => 717px
            [top] => 75px
            [left] => 0px
        )

    [IMG-633-P1B3] => Array
        (
            [height] => 188px
            [width] => 377px
            [top] => 207px
            [left] => 0px
        )

    [IMG-633-P1B4] => Array
        (
            [height] => 188px
            [width] => 377px
            [top] => 0px
            [left] => 0px
        )

)
生成$new_样式:

$content = '';
foreach($new_styles as $id=>$ns)
{
        $inline_styles = '';
        foreach($ns as $name=>$value) $inline_styles .= $name.': '.$value.'; ';
        $inline_styles = trim($inline_styles);
        $content .= '<div id="'.$id.'" style="'.$inline_styles."\"></div>\n";
}
编辑:根据OP的要求,我在回答中添加了更多内容。 要在内容中使用这些样式,可以执行以下操作:

<div id="TXT-633-P1B1" style="height: 75px; width: 793px; top: 0px; left: 0px;"></div>
<div id="TXT-633-P1B2" style="height: 197px; width: 717px; top: 75px; left: 0px;"></div>
<div id="IMG-633-P1B3" style="height: 188px; width: 377px; top: 207px; left: 0px;"></div>
<div id="IMG-633-P1B4" style="height: 188px; width: 377px; top: 0px; left: 0px;"></div>
将$content设置为:


谢谢,这很有帮助,我有一个问题。如何将这些值添加到一个预先制作的div中。例如:对于该数组中的每个ID都是这样。谢谢,我真的很感激。@user999221我在回答中添加了更多内容谢谢,我自己也很接近。我还有最后一个问题。例如,当我希望值为时,就像上面数组的顺序一样:value[1]value[2]value[3]。。。。。这与div样式无关,因为它们工作得很好,这是另外一回事。我希望你明白我的想法?再次感谢。为了澄清,这些值也可以在列表中使用,这就是为什么我在它们后面添加了[]。我已经有了以下代码:函数flant$array{if!is_array$array{return array$array;}$result=array;foreach$array as$value{$result=array\u merge$result,flant$value;}返回$result;}$arr=$new_样式;foreach将$arr展平为$key=>$value{echo$key=$value;}这给了我key=value,例如:0=75,1=793。现在我想要的是使用值为:$value[$key]的键,但这只提供了结果数组。
$content = '';
foreach($new_styles as $id=>$ns)
{
        $inline_styles = '';
        foreach($ns as $name=>$value) $inline_styles .= $name.': '.$value.'; ';
        $inline_styles = trim($inline_styles);
        $content .= '<div id="'.$id.'" style="'.$inline_styles."\"></div>\n";
}
<div id="TXT-633-P1B1" style="height: 75px; width: 793px; top: 0px; left: 0px;"></div>
<div id="TXT-633-P1B2" style="height: 197px; width: 717px; top: 75px; left: 0px;"></div>
<div id="IMG-633-P1B3" style="height: 188px; width: 377px; top: 207px; left: 0px;"></div>
<div id="IMG-633-P1B4" style="height: 188px; width: 377px; top: 0px; left: 0px;"></div>