$_POST动态名称,不使用foreach


$_POST dynamic name WITHOUT using foreach

我正试图从phpmailer中的输入中$_POST一个动态名称。我想得到以计数器结尾的特定输入的值(例如productname1、productname2……其中数字是动态的,"productname"是静态的)。我不想逐个调用这些值,因为这是多余和荒谬的。

我搜索过,似乎只得到了使用"foreach"answers"key=>$value"的解决方案。这不起作用,因为我想创建一个有5列的表。

代替:

foreach($_POST as $pprice => $ppricevalue) {
if(strpos($pprice, 'Price/Unit') === 0) {
}}

我想要一些类似的东西:

$ppricevalue = $_POST[(strpos($pprice, 'Price/Unit') === 0)];

后者无效。非常感谢您的帮助!

编辑------------------------>

切入正题,也许发布我想完成的事情的直接方法可能会给我一个很好的答案。

我已经设法使用div和"float:left"属性动态创建了一个表,以使用div创建一个表(实际上不是表,但您明白了)。它就像一个符咒!。然而,微软及其资本主义怪物,在本例中是微软Outlook,去掉了一些html元素和大部分css。我敢打赌,如果我使用那些丑陋的MSO类,Outlook不会剥离或破坏我的工作。

这就是代码。诀窍是,你如何把它变成一张桌子?一个真正的html表?

$msg .="<div style='width:100%; white-space:nowrap; color:fff; font-weight:bold;'><div style='width:55%; background-color:#888; margin:0px; text-indent:10px;padding:10px 0px 10px 0px; float:left;'>Product Desc.</div><div style='width:10%;background-color:#888;  margin:0px; text-indent:10px;padding:10px 0px 10px 0px;float:left;'>Price</div><div style='width:6%;background-color:#888; margin:0px; text-indent:10px;padding:10px 0px 10px 0px;float:left;'>Qty</div><div style='width:14%;background-color:#888; margin:0px; text-indent:10px;padding:10px 0px 10px 0px;float:left;'>Core</div><div style='width:10%;background-color:#888; margin:0px; text-indent:10px;padding:10px 0px 10px 0px;float:left;'>Total</div></div>";

$msg .= "<div style='width:100%; margin:0px;'><div style='float:left; width:55%; white-space:normal;'>";
foreach($_POST as $product => $productvalue) {
if(strpos($product, 'Product#') === 0) {
    $msg .= "<div style='border:1px solid #ccc; padding:5px; font-size:12px; height:40px;'>" . $productvalue . "</div>";
}
}
$msg .= "</div>";
$msg .= "<div style='float:left; width:10%;'>";
foreach($_POST as $pprice => $ppricevalue) {
if(strpos($pprice, 'Price/Unit') === 0) {
    $msg .= "<div style='border:1px solid #ccc; padding:5px; font-size:12px; height:40px;'>" . $ppricevalue . "</div>";
}
}
$msg .= "</div>";
$msg .= "<div style='float:left; width:6%;'>";
foreach($_POST as $quantity => $quantityvalue) {
if(strpos($quantity, 'Quantity') === 0) {
    $msg .= "<div style='border:1px solid #ccc; padding:5px; font-size:12px; height:40px;'>" . $quantityvalue . "</div>";
}
}
$msg .= "</div>";
$msg .= "<div style='float:left; width:14%;'>";
foreach($_POST as $core => $corevalue) {
if(strpos($core, 'Core') === 0) {
    $msg .= "<div style='border:1px solid #ccc; padding:5px; font-size:12px; height:40px;'>" . $corevalue . "</div>";
}
}
$msg .= "</div>";
$msg .= "<div style='float:left; width:10%;'>";
foreach($_POST as $total => $totalvalue) {
if(strpos($total, 'Sub') === 0) {
    $msg .= "<div style='border:1px solid #ccc; padding:5px; font-size:12px; height:40px;'>" . $totalvalue . "</div>";
}
}

$msg .= "<hr><div style='float:left; margin-left:-140%; overflow:visible; font-size:12px; line-height:2.1em;'>Net Total:</div><div style='border:1px solid #ccc; padding:5px; font-size:12px; height:13px;'>" . $nettotal . "</div>";
$msg .= "<div style='float:left; margin-left:-140%; overflow:visible;font-size:12px;line-height:2.1em;'>State Tax:</div><div style='border:1px solid #ccc; padding:5px; font-size:12px; height:13px;'>" . $statetaxtotal . "</div>";
$msg .= "<div style='float:left; margin-left:-140%; overflow:visible; font-size:12px;line-height:2.1em;'>Municipal Tax:</div><div style='border:1px solid #ccc; padding:5px; font-size:12px; height:13px;'>" . $municipaltaxtotal . "</div>";

$msg .= "<hr><div style='float:left; margin-left:-140%; overflow:visible;'><b>Grand Total:</b></div><div style='float:left; width:100%;'><div style='border:1px solid #ccc; padding:5px; font-size:12px; height:13px;'>" . $grandtotal . "</div>";
$msg .= "</div></div>";
$msg .= "</div></div>";

感谢您的快速回复!

不确定这是否正是您所需要的,但也许这可以奏效?

$dynamic = count($_POST);
if (isset($_POST['productname'.$dynamic])) {
    $ppricevalue = $_POST['productname'.$dynamic]['Price/Unit'];
}