代码之家  ›  专栏  ›  技术社区  ›  flash

如何在PHP中添加来自序列化字符串的额外字母?

  •  0
  • flash  · 技术社区  · 6 年前

    我正在处理一个PHP中的序列化字符串,在该字符串未序列化时,我希望在其中添加其他字母。

    序列化字符串的片段为:

    a:7:。{
    S:3:“周一”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    S:3:“周二”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    S:3:“周三”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    S:3:“周四”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    S:3:“周五”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    S:3:“周六”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    S:3:“太阳”;A:2:。{
    S:5:“开始”;S:5:“09:00”;S:3:“结束”;S:5:“21:00”;
    }
    }
    < /代码> 
    
    

    我用来使上述序列化字符串非序列化的PHP代码是:

    <?PHP
    $serialized='';
    对于($i=0;$i<count($data[“item”]->logistic_out);$i++){
    if(strcmp($data['item']->logistic_out[$i]->logistic_type,“location_pickup”)==0)
    {
    $serialized.=strtolower($data['item']->logistic_out[$i]->logistic_times);
    }
    }
    如果($serialized!= ' ')
    {
    /*
    echo'<span class=“font-weight-bold如何使此文本”>'。如何接收此项目“.”l//跨度& gt;
    echo“<br>”;
    echo“<br>”;
    echo'<span class=“font-weight bold MB-3 ML-3”>'。从项目位置提货<br/>“”l//跨度& gt;
    echo“<br>”;
    echo“<br>”;。*/
    $unserialized=未序列化($serialized);
    
    foreach($unserialized as$key=>$value)
    {
    echo$key。“:$value['start']”,$value['end'],“lt;br/><br/><br/>”
    }
    }
    其他的
    {
    echo“<p style=\”字体样式:italic;“>无可用信息</p>”;
    }
    ?gt;
    < /代码> 
    
    <> 

    问题陈述:

    上面代码中的echo语句正在生成以下O/P。我想知道我应该在上面的echo语句中进行哪些更改,以便O/P具有星期一、星期二、星期三、星期四、星期六、星期日

    .

    a: 7: {
        s: 3: "mon";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
        s: 3: "tue";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
        s: 3: "wed";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
        s: 3: "thu";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
        s: 3: "fri";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
        s: 3: "sat";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
        s: 3: "sun";a: 2: {
            s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
        }
    }
    

    我用来使上述序列化字符串非序列化的PHP代码是:

    <?php 
       $serialized = '';
       for ($i = 0; $i < count($data['item']->logistic_out); $i++) {
       if(strcmp($data['item']->logistic_out[$i]->logistics_type, "location_pickup") == 0)
       {
       $serialized .= strtolower($data['item']->logistic_out[$i]->logistics_times);
       }
       }
       if($serialized != '')
       {
       /*
       echo '<span class="font-weight-bold how-can-this-text">' . "how can this item be received" . '</span>';
       echo "<br>"; 
       echo "<br>"; 
       echo '<span class="font-weight-bold mb-3 ml-3">' . "pickup from item's location <br/>" . '</span>';
       echo "<br>";
       echo "<br>";  */
       $unserialized = unserialize( $serialized );
    
       foreach($unserialized as $key=>$value)
       {
       echo $key.":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['start']."&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['end']."<br/> <br/>";
       }
       }
       else
       {
           echo "<p style=\"font-style: italic;\">No information available</p>";
       }
       ?>
    


    问题陈述:

    上面代码中的echo语句正在生成以下O/P。我想知道在上面的回音声明,以便O/PS在星期一星期二星期三星期四星期五星期六星期天

    2 回复  |  直到 6 年前
        1
  •  1
  •   AbraCadaver    6 年前

    您可以转换为时间戳,然后提取星期几的完整文本表示:

    echo date('l', strtotime($key));
    

    要将时间从24小时更改为12小时,请执行相同的操作:

    echo date('g', strtotime($value['end']));
    

    PHP - date 所有格式。

        2
  •  -2
  •   Rinsad Ahmed    6 年前

    更新了我的答案。请检查

    echo date('l', strtotime($key)).":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['start']."&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['end']."<br/> <br/>";